diff --git a/DDCMS/include/DDCMS/DDCMS.h b/DDCMS/include/DDCMS/DDCMS.h
index 5192332eb2705b48b296527a7dee1d897bc17aa2..7d15a05a794c0698d7f864e28cc5ff1f9162e7f5 100644
--- a/DDCMS/include/DDCMS/DDCMS.h
+++ b/DDCMS/include/DDCMS/DDCMS.h
@@ -52,6 +52,7 @@ namespace dd4hep {
       Namespace() = delete;
       /// Initializing constructor
       Namespace(ParsingContext* ctx, xml_h element);
+      Namespace(ParsingContext& ctx, xml_h element, bool);
       /// Initializing constructor
       Namespace(ParsingContext* ctx);
       /// Initializing constructor
@@ -66,11 +67,37 @@ namespace dd4hep {
       std::string prepend(const std::string& n)  const;
       /// Resolve namespace during XML parsing
       std::string real_name(const std::string& v)  const;
+      /// Strip off the namespace part of a given name
+      static std::string obj_name(const std::string& name);
+      /// Return the namespace name of a component
+      static std::string ns_name(const std::string& n);
       template <typename T> T attr(xml_elt_t elt,const xml_tag_t& n) const   {
         std::string val = real_name(elt.attr<std::string>(n));
         elt.setAttr(n,val);
         return elt.attr<T>(n);
       }
+      /// Add a new constant to the namespace
+      void addConstant(const std::string& name, const std::string& value, const std::string& type)  const;
+      /// Add a new constant to the namespace as fully indicated by the name
+      void addConstantNS(const std::string& name, const std::string& value, const std::string& type)  const;
+
+      /// Access material by its namespace dressed name
+      Material material(const std::string& name)  const;
+      Solid  solid(const std::string& name)  const;
+      /// Add solid to current namespace
+      void addSolid(const std::string& name,Solid solid)  const;
+      /// Add solid to current namespace as fully indicated by the name
+      void addSolidNS(const std::string& name,Solid solid)  const;
+
+      Volume volume(const std::string& name, bool exc=true)  const;
+      /// Add volume to current namespace
+      void addVolume(Volume vol)  const;
+      /// Add volume to current namespace as fully indicated by the name
+      void addVolumeNS(Volume vol)  const;
+
+      const Rotation3D& rotation(const std::string& name)  const;
+      /// Add rotation matrix to current namespace
+      void addRotation(const std::string& name,const Rotation3D& rot)  const;
     };
 
     /// XML parser context to store intermediate stuff
@@ -82,6 +109,7 @@ namespace dd4hep {
      */
     class ParsingContext  {
     public:
+      Detector*                          description;
       std::map<std::string, Rotation3D>  rotations;
       std::map<std::string, Solid>       shapes;
       std::map<std::string, Volume>      volumes;
@@ -89,20 +117,21 @@ namespace dd4hep {
       bool geo_inited = false;
 
       // Debug flags
+      bool debug_includes     = false;
       bool debug_constants    = false;
       bool debug_materials    = false;
+      bool debug_rotations    = false;
       bool debug_shapes       = false;
       bool debug_volumes      = false;
       bool debug_placements   = false;
       bool debug_namespaces   = false;
       bool debug_visattr      = false;
+      bool debug_algorithms   = false;
 
     public:
-      ParsingContext() { namespaces.push_back(""); }
+      ParsingContext(Detector* det) : description(det) { namespaces.push_back(""); }
       ~ParsingContext() = default;
       const std::string& ns() const  {  return namespaces.back(); }
-      Volume volume(const std::string& name)  const;
-      const Rotation3D& rotation(const std::string& name)  const;
     };
 
     /// Encapsulation of the CMS detector description algorithm arguments
@@ -137,6 +166,8 @@ namespace dd4hep {
 
       /// Access value of rParent child node
       std::string parentName()  const;
+      /// Access value of child'name from the xml element
+      std::string childName()  const;
       /// Check the existence of an argument by name
       bool find(const std::string& name)  const;
       /// Access typed argument by name
diff --git a/DDCMS/include/DDCMS/DDCMSPlugins.h b/DDCMS/include/DDCMS/DDCMSPlugins.h
index 4600936be6a0a4c27dbdbf7218d0d00db204f38c..b7e1074cdca233ee852acbd696ccf668cdd74e75 100644
--- a/DDCMS/include/DDCMS/DDCMSPlugins.h
+++ b/DDCMS/include/DDCMS/DDCMSPlugins.h
@@ -19,6 +19,7 @@
 
 // Framework includes
 #include "DD4hep/Plugins.h"
+#include "CLHEP/Units/SystemOfUnits.h"
 #include "DDCMS/DDCMS.h"
 
 /// Namespace for the AIDA detector description toolkit
@@ -36,26 +37,26 @@ namespace dd4hep {
    */
   template <typename T> class DDCMSDetElementFactory : public PluginFactoryBase {
   public:
-    static Handle<NamedObject> create(Detector& description,cms::ParsingContext& ctxt,xml::Handle_t e,SensitiveDetector& sens);
+    static long create(Detector& description,cms::ParsingContext& ctxt,xml::Handle_t e,SensitiveDetector& sens);
   };
 }     /* End namespace dd4hep          */
 namespace {
   /// Forward declartion of the base factory template
   template <typename P, typename S> class Factory;
-  DD4HEP_PLUGIN_FACTORY_ARGS_4(ns::Named*,dd4hep::Detector*,dd4hep::cms::ParsingContext*,ns::xml_h*,dd4hep::SensitiveDetector*)
-  {    return dd4hep::DDCMSDetElementFactory<P>::create(*a0,*a1,*a2,*a3).ptr();               }
+  DD4HEP_PLUGIN_FACTORY_ARGS_4(long,dd4hep::Detector*,dd4hep::cms::ParsingContext*,ns::xml_h*,dd4hep::SensitiveDetector*)
+  {    return dd4hep::DDCMSDetElementFactory<P>::create(*a0,*a1,*a2,*a3);                     }
 }
 
 #define DECLARE_DDCMS_DETELEMENT(name,func)                                                   \
   DD4HEP_OPEN_PLUGIN(dd4hep,ddcms_det_element_##name) {                                       \
-    template <> Handle<NamedObject>                                                           \
+    template <> long                                                                          \
       DDCMSDetElementFactory< ddcms_det_element_##name >::create(dd4hep::Detector& d,         \
                                                                  cms::ParsingContext& c,      \
                                                                  xml::Handle_t e,             \
                                                                  SensitiveDetector& h)        \
     {  return func(d,c,e,h);       }                                                          \
     DD4HEP_PLUGINSVC_FACTORY(ddcms_det_element_##name,name,                                   \
-                             NamedObject*(dd4hep::Detector*,dd4hep::cms::ParsingContext*,     \
-                                          ns::xml_h*,dd4hep::SensitiveDetector*),__LINE__)  }
+                             long(dd4hep::Detector*,dd4hep::cms::ParsingContext*,             \
+                                  ns::xml_h*,dd4hep::SensitiveDetector*),__LINE__)  }
 
 #endif /* DD4HEP_DDCMS_DDCMSPLUGINS_H  */
diff --git a/DDCMS/include/DDCMS/DDCMSTags.h b/DDCMS/include/DDCMS/DDCMSTags.h
index b11ccf673bf414173890826403493ae6c3620be1..7cabe34081d9c9f6e84b2f08a07f06e94173c108 100644
--- a/DDCMS/include/DDCMS/DDCMSTags.h
+++ b/DDCMS/include/DDCMS/DDCMSTags.h
@@ -76,7 +76,24 @@ namespace dd4hep {
     UNICODE(Polycone);
     UNICODE(ZSection);
     UNICODE(z);
+
+    UNICODE(Trapezoid);
+    UNICODE(alp1);
+    UNICODE(h1);
+    UNICODE(bl1);
+    UNICODE(tl1);
+    UNICODE(alp2);
+    UNICODE(h2);
+    UNICODE(bl2);
+    UNICODE(tl2);
+
+    UNICODE(Torus);
+    UNICODE(torusRadius);
+    UNICODE(innerRadius);
+    UNICODE(outerRadius);
     
+    UNICODE(SubtractionSolid);
+
     UNICODE(LogicalPartSection);
     UNICODE(LogicalPart);
     UNICODE(rSolid);
@@ -86,6 +103,7 @@ namespace dd4hep {
     UNICODE(PosPart);
     UNICODE(copyNumber);
     UNICODE(rParent);
+    UNICODE(ChildName);
     UNICODE(rChild);
     UNICODE(Translation);
 
@@ -105,7 +123,10 @@ namespace dd4hep {
     UNICODE(debug_volumes);
     UNICODE(debug_placements);
     UNICODE(debug_namespaces);
+    UNICODE(debug_rotations);
     UNICODE(debug_visattr);
+    UNICODE(debug_includes);
+    UNICODE(debug_algorithms);
 
     /// DD4hep specific
     UNICODE(IncludeSection);
diff --git a/DDCMS/src/DDCMS.cpp b/DDCMS/src/DDCMS.cpp
index c7f6a22643eefb3d63466c6c1fb21ae696dc969c..a1dd309290dc4ca8bc8f8da07261b5de4537a293 100644
--- a/DDCMS/src/DDCMS.cpp
+++ b/DDCMS/src/DDCMS.cpp
@@ -16,10 +16,14 @@
 //==========================================================================
 
 // Framework includes
+#include "DD4hep/Path.h"
 #include "DD4hep/Printout.h"
+#include "DD4hep/Detector.h"
 #include "DD4hep/BasicGrammar.h"
 #include "DDCMS/DDCMS.h"
 
+#include <TClass.h>
+
 // C/C++ include files
 #include <stdexcept>
 
@@ -27,9 +31,11 @@ using namespace std;
 using namespace dd4hep;
 using namespace dd4hep::cms;
 
+#define NAMESPACE_SEP '_'
+
 Rotation3D dd4hep::cms::make_rotation3D(double thetaX, double phiX,
-                                          double thetaY, double phiY,
-                                          double thetaZ, double phiZ)   {
+                                        double thetaY, double phiY,
+                                        double thetaZ, double phiZ)   {
   Position  posX(sin(thetaX) * cos(phiX), sin(thetaX) * sin(phiX), cos(thetaX));
   Position  posY(sin(thetaY) * cos(phiY), sin(thetaY) * sin(phiY), cos(thetaY));
   Position  posZ(sin(thetaZ) * cos(phiZ), sin(thetaZ) * sin(phiZ), cos(thetaZ));
@@ -37,20 +43,6 @@ Rotation3D dd4hep::cms::make_rotation3D(double thetaX, double phiX,
   return rot;
 }
 
-Volume ParsingContext::volume(const std::string& name)  const   {
-  auto i = volumes.find(name);
-  if ( i != volumes.end() ) return (*i).second;
-  throw runtime_error("Unknown volume identifier:"+name);
-}
-
-const Rotation3D& ParsingContext::rotation(const std::string& name)  const   {
-  static Rotation3D s_null;
-  auto i = rotations.find(name);
-  if ( i != rotations.end() ) return (*i).second;
-  if ( name.find("_NULL") == name.length()-5 ) return s_null;
-  throw runtime_error("Unknown rotation identifier:"+name);
-}
-
 /// Initializing constructor
 Namespace::Namespace(ParsingContext* ctx, xml_h element) : context(ctx)  {
   xml_dim_t elt(element);
@@ -64,11 +56,41 @@ Namespace::Namespace(ParsingContext* ctx, xml_h element) : context(ctx)  {
              "DDCMS","+++ Current namespace is now: %s",name.c_str());
     return;
   }
-  name = name.substr(0,name.find('.'));
-  context->namespaces.push_back(name.empty() ? name : name+'_');
+  if ( has_label )   {
+    size_t idx = name.find('.');
+    name = name.substr(0,idx);
+  }
+  else  {
+    Path   path(xml::DocumentHandler::system_path(element));
+    name = path.filename().substr(0,path.filename().rfind('.'));
+  }
+  if ( !name.empty() ) name += NAMESPACE_SEP;
+  context->namespaces.push_back(name);
   pop = true;
   printout(context->debug_namespaces ? ALWAYS : DEBUG,
            "DDCMS","+++ Current namespace is now: %s",name.c_str());
+  return;
+}
+
+/// Initializing constructor
+Namespace::Namespace(ParsingContext& ctx, xml_h element, bool ) : context(&ctx)  {
+  xml_dim_t elt(element);
+  bool has_label = elt.hasAttr(_U(label));
+  name = has_label ? elt.labelStr() : "";
+  if ( has_label )   {
+    size_t idx = name.find('.');
+    name = name.substr(0,idx);
+  }
+  else  {
+    Path   path(xml::DocumentHandler::system_path(element));
+    name = path.filename().substr(0,path.filename().rfind('.'));
+  }
+  if ( !name.empty() ) name += NAMESPACE_SEP;
+  context->namespaces.push_back(name);
+  pop = true;
+  printout(context->debug_namespaces ? ALWAYS : DEBUG,
+           "DDCMS","+++ Current namespace is now: %s",name.c_str());
+  return;
 }
 
 /// Initializing constructor
@@ -91,12 +113,12 @@ Namespace::~Namespace()   {
 }
 
 /// Prepend name with namespace
-std::string Namespace::prepend(const std::string& n)  const   {
+string Namespace::prepend(const string& n)  const   {
   return name + n;
 }
 
 /// Resolve namespace during XML parsing
-std::string Namespace::real_name(const std::string& v)  const  {
+string Namespace::real_name(const string& v)  const  {
   size_t idx, idq, idp;
   string val = v;
   while ( (idx=val.find('[')) != string::npos )  {
@@ -107,12 +129,155 @@ std::string Namespace::real_name(const std::string& v)  const  {
     if ( idp == string::npos || idp > idq )
       val.insert(idx,name);
     else if ( idp != string::npos && idp < idq )
-      val[idp] = '_';
+      val[idp] = NAMESPACE_SEP;
   }
-  while ( (idx=val.find(':')) != string::npos ) val[idx]='_';
+  while ( (idx=val.find(':')) != string::npos ) val[idx]=NAMESPACE_SEP;
   return val;
 }
 
+/// Return the namespace name of a component
+string Namespace::ns_name(const string& nam)    {
+  size_t idx;
+  if ( (idx=nam.find(':')) != string::npos )
+    return nam.substr(0,idx);
+  else if ( (idx=nam.find('_')) != string::npos )
+    return nam.substr(0,idx);
+  return "";
+}
+
+/// Strip off the namespace part of a given name
+string Namespace::obj_name(const string& nam)   {
+  size_t idx;
+  if ( (idx=nam.find(':')) != string::npos )
+    return nam.substr(idx+1);
+  else if ( (idx=nam.find('_')) != string::npos )
+    return nam.substr(idx+1);
+  return "";
+}
+
+/// Add a new constant to the namespace
+void Namespace::addConstant(const string& nam, const string& val, const string& typ)  const  {
+  addConstantNS(prepend(nam), val, typ);
+}
+
+/// Add a new constant to the namespace indicated by the name
+void Namespace::addConstantNS(const string& nam, const string& val, const string& typ)  const {
+  const string& v = val;
+  const string& n = nam;
+  printout(context->debug_constants ? ALWAYS : DEBUG,
+           "DDCMS","+++ Add constant object: %-40s = %s [type:%s]",
+           n.c_str(), v.c_str(), typ.c_str());
+  _toDictionary(n, v, typ);
+  Constant c(n, v, typ);
+  context->description->addConstant(c);
+}
+
+/// Access material by its namespace dressed name
+Material Namespace::material(const string& nam)  const   {
+  return context->description->material(real_name(nam));
+}
+
+/// Add rotation matrix to current namespace
+void Namespace::addRotation(const string& nam,const Rotation3D& rot)  const  {
+  string n = prepend(nam);
+  context->rotations[n] = rot;
+}
+
+const Rotation3D& Namespace::rotation(const string& nam)  const   {
+  static Rotation3D s_null;
+  size_t idx;
+  auto i = context->rotations.find(nam);
+  if ( i != context->rotations.end() )
+    return (*i).second;
+  else if ( nam == "NULL" )
+    return s_null;
+  else if ( nam.find("_NULL") == nam.length()-5 )
+    return s_null;
+  string n = nam;
+  if ( (idx=nam.find(':')) != string::npos )  {
+    n[idx] = NAMESPACE_SEP;
+    i = context->rotations.find(n);
+    if ( i != context->rotations.end() )
+      return (*i).second;
+  }
+  for (const auto& r : context->rotations )  {
+    cout << r.first << endl;
+  }
+  throw runtime_error("Unknown rotation identifier:"+nam);
+}
+
+/// Add rotation matrix to current namespace
+void Namespace::addVolumeNS(Volume vol)  const  {
+  string   n = vol.name();
+  Solid    s = vol.solid();
+  Material m = vol.material();
+  vol->SetName(n.c_str());
+  context->volumes[n] = vol;
+  printout(context->debug_volumes ? ALWAYS : DEBUG, "DDCMS",
+           "+++ Add volume:%-38s Solid:%-26s[%-16s] Material:%s",
+           vol.name(), s.name(), s.type(), m.name());
+}
+
+/// Add rotation matrix to current namespace
+void Namespace::addVolume(Volume vol)  const  {
+  string   n = prepend(vol.name());
+  Solid    s = vol.solid();
+  Material m = vol.material();
+  vol->SetName(n.c_str());
+  context->volumes[n] = vol;
+  printout(context->debug_volumes ? ALWAYS : DEBUG, "DDCMS",
+           "+++ Add volume:%-38s Solid:%-26s[%-16s] Material:%s",
+           vol.name(), s.name(), s.type(), m.name());
+}
+
+Volume Namespace::volume(const string& nam, bool exc)  const   {
+  size_t idx;
+  auto i = context->volumes.find(nam);
+  if ( i != context->volumes.end() )  {
+    return (*i).second;
+  }
+  if ( (idx=nam.find(':')) != string::npos )  {
+    string n = nam;
+    n[idx] = NAMESPACE_SEP;
+    i = context->volumes.find(n);
+    if ( i != context->volumes.end() )
+      return (*i).second;
+  }
+  if ( exc )  {
+    throw runtime_error("Unknown volume identifier:"+nam);
+  }
+  return 0;
+}
+
+/// Add solid to current namespace as fully indicated by the name
+void Namespace::addSolidNS(const std::string& nam,Solid sol)  const   {
+  printout(context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
+           "+++ Add shape of type %s : %s",sol->IsA()->GetName(), nam.c_str());
+  context->shapes[nam] = sol.setName(nam);
+}
+
+/// Add solid to current namespace
+void Namespace::addSolid(const string& nam, Solid sol)  const  {
+  addSolidNS(prepend(nam), sol);
+}
+
+Solid Namespace::solid(const string& nam)  const   {
+  size_t idx;
+  string n = context->namespaces.back() + nam;
+  auto i = context->shapes.find(n);
+  if ( i != context->shapes.end() )
+    return (*i).second;
+  if ( (idx=nam.find(':')) != string::npos )  {
+    n = real_name(nam);
+    n[idx] = NAMESPACE_SEP;
+    i = context->shapes.find(n);
+    if ( i != context->shapes.end() )
+      return (*i).second;
+  }  
+  i = context->shapes.find(nam);
+  if ( i != context->shapes.end() ) return (*i).second;
+  throw runtime_error("Unknown shape identifier:"+nam);
+}
 
 AlgoArguments::AlgoArguments(ParsingContext& ctxt, xml_h elt)
   : context(ctxt), element(elt)
@@ -121,15 +286,21 @@ AlgoArguments::AlgoArguments(ParsingContext& ctxt, xml_h elt)
 }
 
 /// Access value of rParent child node
-std::string AlgoArguments::parentName()  const    {
-  Namespace     ns(context);
+string AlgoArguments::parentName()  const    {
+  Namespace n(context);
   xml_dim_t e(element);
-  string val = ns.real_name(xml_dim_t(e.child(_CMU(rParent))).nameStr());
+  string val = n.real_name(xml_dim_t(e.child(_CMU(rParent))).nameStr());
   return val;
 }
 
+/// Access value of child'name from the xml element
+string AlgoArguments::childName()  const   {
+  Namespace n(context);
+  return n.real_name(value<string>("ChildName"));
+}
+
 /// Check the existence of an argument by name
-bool AlgoArguments::find(const std::string& nam)  const   {
+bool AlgoArguments::find(const string& nam)  const   {
   for(xml_coll_t p(element,_U(star)); p; ++p)  {
     string n = p.attr<string>(_U(name));
     if ( n == nam )  {
@@ -147,7 +318,8 @@ xml_h AlgoArguments::raw_arg(const string& nam)  const   {
       return p;
     }
   }
-  throw runtime_error("DDCMS: Attempt to access non-existing algorithm option: " + name);
+  except("DDCMS","+++ Attempt to access non-existing algorithm option %s[%s]",name.c_str(),nam.c_str());
+  throw runtime_error("DDCMS: Attempt to access non-existing algorithm option.");
 }
 
 /// Access namespace resolved argument as a string by name
@@ -182,7 +354,7 @@ namespace {
       except("DDCMS","+++ VectorParam<%s>: %s -> %s [Invalid entry count: %d <> %ld]",
              typ.c_str(), nam.c_str(), val.c_str(), num, data.size());
     }
-    printout(INFO,"DDCMS","+++ VectorParam<%s>: ret=%d %s -> %s",
+    printout(DEBUG,"DDCMS","+++ VectorParam<%s>: ret=%d %s -> %s",
              typ.c_str(), res, nam.c_str(), gr.str(&data).c_str());
     return data;
   }
@@ -196,22 +368,32 @@ namespace {
   template <> string __cnv<string>(const string& arg)   { return arg;  }
 
   template <typename T> vector<T> __cnvVect(const AlgoArguments* a, const char* req_typ, xml_h xp)   {
-    vector<string> str_data = raw_vector(a, xp);
+    Namespace ns(a->context);
+    string piece;
+    string nam = xp.attr<string>(_U(name));
     string typ = xp.attr<string>(_U(type));
+    string val = xp.text();
+    int    num = xp.attr<int>(_CMU(nEntries));
     if ( typ != req_typ )   {
-      string nam = xp.attr<string>(_U(name));
-      const BasicGrammar& gr = BasicGrammar::instance<vector<string> >();
       except("DDCMS",
              "+++ VectorParam<%s | %s>: %s -> <%s> %s [Incompatible vector-type]",
              req_typ, typ.c_str(), nam.c_str(), typeName(typeid(T)).c_str(),
-             gr.str(&str_data).c_str());
+             val.c_str());
     }
-    vector<T> res_data;
-    for(const auto& v : str_data)  {
-      T d = __cnv<T>(v);
-      res_data.push_back(d);
+    vector<T> data;
+    val = remove_whitespace(val);
+    if ( !val.empty() ) val += ',';
+    for(size_t idx=0, idq=val.find(',',idx);
+        idx != string::npos && idq != string::npos;
+        idx=++idq, idq=val.find(',',idx))
+    {
+      piece = ns.real_name(val.substr(idx,idq-idx));
+      T d = __cnv<T>(piece);
+      data.push_back(d);
     }
-    return res_data;
+    printout(DEBUG,"DDCMS","+++ VectorParam<%s>: %s[%d] -> %s",
+             typ.c_str(), nam.c_str(), num, val.c_str());
+    return data;
   }
 }
 
diff --git a/DDCMS/src/plugins/DDDefinitions2Objects.cpp b/DDCMS/src/plugins/DDDefinitions2Objects.cpp
index 16482c5de5b6ade78fe9f53125ba3815d20aeacf..5a4cc790b3caed4fbb4d369f90585cdbc8f60d01 100644
--- a/DDCMS/src/plugins/DDDefinitions2Objects.cpp
+++ b/DDCMS/src/plugins/DDDefinitions2Objects.cpp
@@ -21,7 +21,6 @@
 #include "DD4hep/GeoHandler.h"
 #include "DD4hep/Printout.h"
 #include "DD4hep/Plugins.h"
-#include "DD4hep/Path.h"
 #include "DD4hep/detail/SegmentationsInterna.h"
 #include "DD4hep/detail/DetectorInterna.h"
 #include "DD4hep/detail/ObjectsInterna.h"
@@ -51,10 +50,17 @@ namespace dd4hep {
 
     static UInt_t unique_mat_id = 0xAFFEFEED;
 
-    class dddefinition;
-    class include;
+    class include_constants;
+    class include_load;
+    class include_unload;
+    class print_xml_doc;
     class constantssection;
     class constant;
+    class resolve   {
+    public:
+      std::vector<xml::Document> includes;
+      std::map<std::string,std::string>  unresolvedConst, allConst, originalConst;
+    };
 
     class materialsection;
     class elementarymaterial;
@@ -62,6 +68,7 @@ namespace dd4hep {
   
     class rotationsection;
     class rotation;
+    class transform3d;
 
     class pospartsection;
     class pospart;
@@ -70,9 +77,15 @@ namespace dd4hep {
     class logicalpart;
 
     class solidsection;
-    class tubs;
+    class trapezoid;
     class polycone;
+    class torus;
+    class tubs;
     class box;
+    class unionsolid;
+    class intersectionsolid;
+    class subtractionsolid;
+    
     class algorithm;    
 
     class vissection;
@@ -82,114 +95,177 @@ namespace dd4hep {
   }
 
   /// Converter instances implemented in this compilation unit
-  template <> void Converter<dddefinition>::operator()(xml_h element) const;
   template <> void Converter<debug>::operator()(xml_h element) const;
+  template <> void Converter<print_xml_doc>::operator()(xml_h element) const;
 
+  /// Converter for <ConstantsSection/> tags
   template <> void Converter<constantssection>::operator()(xml_h element) const;
   template <> void Converter<constant>::operator()(xml_h element) const;
+  template <> void Converter<resolve>::operator()(xml_h element) const;
 
+  /// Converter for <VisSection/> tags
   template <> void Converter<vissection>::operator()(xml_h element) const;
   template <> void Converter<vis_apply>::operator()(xml_h element) const;
   template <> void Converter<vis>::operator()(xml_h element) const;
 
+  /// Converter for <MaterialSection/> tags
   template <> void Converter<materialsection>::operator()(xml_h element) const;
   template <> void Converter<elementarymaterial>::operator()(xml_h element) const;
   template <> void Converter<compositematerial>::operator()(xml_h element) const;
 
+  /// Converter for <RotationSection/> tags
   template <> void Converter<rotationsection>::operator()(xml_h element) const;
+  /// Converter for <Rotation/> tags
   template <> void Converter<rotation>::operator()(xml_h element) const;
+  template <> void Converter<transform3d>::operator()(xml_h element) const;
 
+  /// Generic converter for  <LogicalPartSection/> tags
   template <> void Converter<logicalpartsection>::operator()(xml_h element) const;
   template <> void Converter<logicalpart>::operator()(xml_h element) const;
 
   template <> void Converter<pospartsection>::operator()(xml_h element) const;
+  /// Converter for <PosPart/> tags
   template <> void Converter<pospart>::operator()(xml_h element) const;
 
+  /// Generic converter for solids: <SolidSection/> tags
   template <> void Converter<solidsection>::operator()(xml_h element) const;
+  /// Converter for <UnionSolid/> tags
+  template <> void Converter<unionsolid>::operator()(xml_h element) const;
+  /// Converter for <SubtractionSolid/> tags
+  template <> void Converter<subtractionsolid>::operator()(xml_h element) const;
+  /// Converter for <IntersectionSolid/> tags
+  template <> void Converter<intersectionsolid>::operator()(xml_h element) const;
+  /// Converter for <Trapezoid/> tags
+  template <> void Converter<trapezoid>::operator()(xml_h element) const;
+  /// Converter for <Polycone/> tags
   template <> void Converter<polycone>::operator()(xml_h element) const;
+  /// Converter for <Torus/> tags
+  template <> void Converter<torus>::operator()(xml_h element) const;
+  /// Converter for <Tubs/> tags
   template <> void Converter<tubs>::operator()(xml_h element) const;
+  /// Converter for <Box/> tags
   template <> void Converter<box>::operator()(xml_h element) const;
 
+  /// Converter for <Algorithm/> tags
   template <> void Converter<algorithm>::operator()(xml_h element) const;
 
-  /// DD4hep specific
-  template <> void Converter<include>::operator()(xml_h element) const;
+  /// DD4hep specific: Load include file
+  template <> void Converter<include_load>::operator()(xml_h element) const;
+  /// DD4hep specific: Unload include file
+  template <> void Converter<include_unload>::operator()(xml_h element) const;
+  /// DD4hep specific: Process constants objects
+  template <> void Converter<include_constants>::operator()(xml_h element) const;
 }
 
 /// Converter for <ConstantsSection/> tags
 template <> void Converter<constantssection>::operator()(xml_h element) const  {
-  ParsingContext* context = _param<ParsingContext>();
-  Namespace ns(context, element);
-  xml_coll_t(element, _CMU(Constant)).for_each(Converter<constant>(description,context));
+  Namespace ns(_param<ParsingContext>(), element);
+  xml_coll_t(element, _CMU(Constant)).for_each(Converter<constant>(description,ns.context,optional));
 }
 
 /// Converter for <VisSection/> tags
 template <> void Converter<vissection>::operator()(xml_h element) const  {
-  ParsingContext* context = _param<ParsingContext>();
-  Namespace ns(context, element);
-  xml_coll_t(element, _CMU(vis)).for_each(Converter<vis>(description,context));
+  Namespace ns(_param<ParsingContext>(), element);
+  xml_coll_t(element, _CMU(vis)).for_each(Converter<vis>(description,ns.context,optional));
 }
 
+/// Converter for <MaterialSection/> tags
 template <> void Converter<materialsection>::operator()(xml_h element) const   {
-  ParsingContext* context = _param<ParsingContext>();
-  Namespace ns(context, element);
-  xml_coll_t(element, _CMU(ElementaryMaterial)).for_each(Converter<elementarymaterial>(description,context));
-  xml_coll_t(element, _CMU(CompositeMaterial)).for_each(Converter<compositematerial>(description,context));
+  Namespace ns(_param<ParsingContext>(), element);
+  xml_coll_t(element, _CMU(ElementaryMaterial)).for_each(Converter<elementarymaterial>(description,ns.context,optional));
+  xml_coll_t(element, _CMU(CompositeMaterial)).for_each(Converter<compositematerial>(description,ns.context,optional));
 }
 
 template <> void Converter<rotationsection>::operator()(xml_h element) const   {
   Namespace ns(_param<ParsingContext>(), element);
-  xml_coll_t(element, _CMU(Rotation)).for_each(Converter<rotation>(description,ns.context));
+  xml_coll_t(element, _CMU(Rotation)).for_each(Converter<rotation>(description,ns.context,optional));
 }
 
 template <> void Converter<pospartsection>::operator()(xml_h element) const   {
   Namespace ns(_param<ParsingContext>(), element);
-  xml_coll_t(element, _CMU(PosPart)).for_each(Converter<pospart>(description,ns.context));
+  xml_coll_t(element, _CMU(PosPart)).for_each(Converter<pospart>(description,ns.context,optional));
 }
 
+/// Generic converter for  <LogicalPartSection/> tags
 template <> void Converter<logicalpartsection>::operator()(xml_h element) const   {
   Namespace ns(_param<ParsingContext>(), element);
-  xml_coll_t(element, _CMU(LogicalPart)).for_each(Converter<logicalpart>(description,ns.context));
+  xml_coll_t(element, _CMU(LogicalPart)).for_each(Converter<logicalpart>(description,ns.context,optional));
 }
 
+/// Generic converter for  <SolidSection/> tags
 template <> void Converter<solidsection>::operator()(xml_h element) const   {
   Namespace ns(_param<ParsingContext>(), element);
   for(xml_coll_t solid(element, _U(star)); solid; ++solid)   {
     string tag = solid.tag();
     if ( tag == "Box" )
-      Converter<box>(description,ns.context)(solid);
+      Converter<box>(description,ns.context,optional)(solid);
     else if ( tag == "Polycone" )
-      Converter<polycone>(description,ns.context)(solid);
+      Converter<polycone>(description,ns.context,optional)(solid);
     else if ( tag == "Tubs" )
-      Converter<tubs>(description,ns.context)(solid);
-    else
-      printout(ERROR,"DDCMS","+++ Request to process unknown shape of type %s",tag.c_str());
+      Converter<tubs>(description,ns.context,optional)(solid);
+    else if ( tag == "Torus" )
+      Converter<torus>(description,ns.context,optional)(solid);
+    else if ( tag == "Trapezoid" )
+      Converter<trapezoid>(description,ns.context,optional)(solid);
+    else if ( tag == "UnionSolid" )
+      Converter<unionsolid>(description,ns.context,optional)(solid);
+    else if ( tag == "SubtractionSolid" )
+      Converter<subtractionsolid>(description,ns.context,optional)(solid);
+    else if ( tag == "IntersectionSolid" )
+      Converter<intersectionsolid>(description,ns.context,optional)(solid);
+    else  {
+      string nam = xml_dim_t(solid).nameStr();
+      printout(ERROR,"DDCMS","+++ Request to process unknown shape %s [%s]",
+               nam.c_str(), tag.c_str());
+    }
   }
 }
 
 /// Converter for <Constant/> tags
 template <> void Converter<constant>::operator()(xml_h element) const  {
   Namespace ns(_param<ParsingContext>());
-  xml_dim_t constant(element);
-  xml_dim_t parent(constant.parent());
-  bool      eval = parent.hasAttr(_U(eval)) ? parent.attr<bool>(_U(eval)) : false;
-  string    val   = "";//ns.real_name(constant.attr<string>(_U(value)));
-  string    nam   = ns.prepend(constant.nameStr());
-  string    typ   = eval ? "number" : "string";
-
-  if ( constant.hasAttr(_U(type)) ) typ = constant.typeStr();
-  if ( nam == "pixbarladderfull_CFStripY" )   { // debugging
-    val = ns.real_name(constant.attr<string>(_U(value)));
+  resolve*  res  = _option<resolve>();
+  xml_dim_t constant = element;
+  xml_dim_t par  = constant.parent();
+  bool      eval = par.hasAttr(_U(eval)) ? par.attr<bool>(_U(eval)) : false;
+  string    val  = constant.valueStr();
+  string    nam  = constant.nameStr();
+  string    real = ns.prepend(nam);
+  string    typ  = eval ? "number" : "string";
+  size_t    idx  = val.find('[');
+  
+  if ( constant.hasAttr(_U(type)) )
+    typ = constant.typeStr();
+
+  if ( idx == string::npos || typ == "string" )  {
+    try  {
+      ns.addConstant(nam, val, typ);
+      res->allConst[real] = val;
+      res->originalConst[real] = val;
+    }
+    catch(const exception& e)   {
+      printout(INFO,"DDCMS","++ Unresolved constant: %s = %s [%s]. Try to resolve later. [%s]",
+               real.c_str(), val.c_str(), typ.c_str(), e.what());
+    }
+    return;
   }
-  else {
-    val = ns.real_name(constant.attr<string>(_U(value)));
+  // Setup the resolution mechanism in Converter<resolve>
+  while ( idx != string::npos )  {
+    ++idx;
+    size_t idp = val.find(':',idx);
+    size_t idq = val.find(']',idx);
+    if ( idp == string::npos || idp > idq )
+      val.insert(idx,ns.name);
+    else if ( idp != string::npos && idp < idq )
+      val[idp] = '_';
+    idx = val.find('[',idx);
   }
+  while ( (idx=val.find(':')) != string::npos ) val[idx]='_';
   printout(ns.context->debug_constants ? ALWAYS : DEBUG,
-           "DDCMS","+++ Add constant object: %s = %s [type:%s]",
-           nam.c_str(), val.c_str(), typ.c_str());
-  Constant c(nam, val, typ);
-  _toDictionary(nam, val, typ);
-  description.addConstant(c);
+           "Constant","Unresolved: %s -> %s",real.c_str(),val.c_str());
+  res->allConst[real] = val;
+  res->originalConst[real] = val;
+  res->unresolvedConst[real] = val;
 }
 
 /** Convert compact visualization attribute to Detector visualization attribute
@@ -259,7 +335,7 @@ template <> void Converter<elementarymaterial>::operator()(xml_h element) const
     TGeoElement*      elt = tab->FindElement(xmat.nameStr().c_str());
 
     printout(ns.context->debug_materials ? ALWAYS : DEBUG, "DDCMS",
-             "++ Converting material %-48s  Density: %.3f.",
+             "+++ Converting material %-48s  Density: %.3f.",
              ('"'+nam+'"').c_str(), density);
 
     if ( !elt )  {
@@ -337,91 +413,135 @@ template <> void Converter<rotation>::operator()(xml_h element) const  {
   ParsingContext* ctx = _param<ParsingContext>();
   Namespace ns(ctx);
   xml_dim_t xrot(element);
-  string    nam = ns.prepend(xrot.nameStr());
-  double    thetaX = xrot.hasAttr(_CMU(thetaX)) ? xrot.attr<double>(_CMU(thetaX)) : 0e0;
-  double    phiX   = xrot.hasAttr(_CMU(phiX))   ? xrot.attr<double>(_CMU(phiX))   : 0e0;
-  double    thetaY = xrot.hasAttr(_CMU(thetaY)) ? xrot.attr<double>(_CMU(thetaY)) : 0e0;
-  double    phiY   = xrot.hasAttr(_CMU(phiY))   ? xrot.attr<double>(_CMU(phiY))   : 0e0;
-  double    thetaZ = xrot.hasAttr(_CMU(thetaZ)) ? xrot.attr<double>(_CMU(thetaZ)) : 0e0;
-  double    phiZ   = xrot.hasAttr(_CMU(phiZ))   ? xrot.attr<double>(_CMU(phiZ))   : 0e0;
-  
+  string    nam    = xrot.nameStr();
+  double    thetaX = xrot.hasAttr(_CMU(thetaX)) ? ns.attr<double>(xrot,_CMU(thetaX)) : 0e0;
+  double    phiX   = xrot.hasAttr(_CMU(phiX))   ? ns.attr<double>(xrot,_CMU(phiX))   : 0e0;
+  double    thetaY = xrot.hasAttr(_CMU(thetaY)) ? ns.attr<double>(xrot,_CMU(thetaY)) : 0e0;
+  double    phiY   = xrot.hasAttr(_CMU(phiY))   ? ns.attr<double>(xrot,_CMU(phiY))   : 0e0;
+  double    thetaZ = xrot.hasAttr(_CMU(thetaZ)) ? ns.attr<double>(xrot,_CMU(thetaZ)) : 0e0;
+  double    phiZ   = xrot.hasAttr(_CMU(phiZ))   ? ns.attr<double>(xrot,_CMU(phiZ))   : 0e0;
   Rotation3D rot = make_rotation3D(thetaX, phiX, thetaY, phiY, thetaZ, phiZ);
-  ctx->rotations[nam] = rot;
+  printout(ctx->debug_rotations ? ALWAYS : DEBUG,
+           "DDCMS","+++ Adding rotation: %-32s: (theta/phi)[rad] X: %6.3f %6.3f Y: %6.3f %6.3f Z: %6.3f %6.3f",
+           ns.prepend(nam).c_str(),thetaX,phiX,thetaY,phiY,thetaZ,phiZ);
+  ns.addRotation(nam, rot);
 }
 
-/// Converter for <Rotation/> tags
+/// Converter for <Logicalpart/> tags
 template <> void Converter<logicalpart>::operator()(xml_h element) const {
   Namespace ns(_param<ParsingContext>());
   xml_dim_t e(element);
-  string    sol_nam  = xml_dim_t(e.child(_CMU(rSolid))).nameStr();
-  string    mat_nam  = xml_dim_t(e.child(_CMU(rMaterial))).nameStr();
-  Material  material = description.material(ns.real_name(mat_nam));
-  Solid     solid    = ns.context->shapes[sol_nam];
-  Volume    volume(ns.prepend(e.nameStr()), solid, material);
-
-  printout(ns.context->debug_volumes ? ALWAYS : DEBUG, "DDCMS",
-           "+++ Volume:%-24s Solid:%-24s [%-24s] Material:%s",
-           volume.name(), solid.name(), solid.type(), material.name());
-  
-  ns.context->volumes[volume.name()] = volume;
+  string    sol = e.child(_CMU(rSolid)).attr<string>(_U(name));
+  string    mat = e.child(_CMU(rMaterial)).attr<string>(_U(name));
+  ns.addVolume(Volume(e.nameStr(), ns.solid(sol), ns.material(mat)));
 }
 
-/// Converter for <Rotation/> tags
-template <> void Converter<pospart>::operator()(xml_h element) const {
-  Namespace ns(_param<ParsingContext>());
-  xml_dim_t e(element);
-  int    copy   = e.attr<int>(_CMU(copyNumber));
-  string parent_nam = ns.real_name(xml_dim_t(e.child(_CMU(rParent))).nameStr());
-  string child_nam  = ns.real_name(xml_dim_t(e.child(_CMU(rChild))).nameStr());
-  Volume parent = ns.context->volumes[parent_nam];
-  Volume child  = ns.context->volumes[child_nam];
-  xml_dim_t translation(e.child(_CMU(Translation),false));
-  xml_dim_t rotation(e.child(_CMU(Rotation),false));
-  xml_dim_t refRotation(e.child(_CMU(rRotation),false));
+/// Helper converter
+template <> void Converter<transform3d>::operator()(xml_h element) const {
+  Namespace    ns(_param<ParsingContext>());
+  Transform3D* tr = _option<Transform3D>();
+  xml_dim_t   e(element);
+  xml_dim_t   translation = e.child(_CMU(Translation),false);
+  xml_dim_t   rotation    = e.child(_CMU(Rotation),false);
+  xml_dim_t   refRotation = e.child(_CMU(rRotation),false);
   Position    pos;
-  RotationZYX rot;
+  Rotation3D  rot;
 
-  printout(ns.context->debug_placements ? ALWAYS : DEBUG, "DDCMS",
-           "+++ %s Parent: %-24s [%s] Child: %-32s [%s] copy:%d",
-           e.tag().c_str(),
-           parent_nam.c_str(), parent.isValid() ? "VALID" : "INVALID",
-           child_nam.c_str(),  child.isValid()  ? "VALID" : "INVALID",
-           copy);
   if ( translation.ptr() )   {
-    double x  = ns.attr<double>(translation,_U(x));
-    double y  = ns.attr<double>(translation,_U(y));
-    double z  = ns.attr<double>(translation,_U(z));
+    double x = ns.attr<double>(translation,_U(x));
+    double y = ns.attr<double>(translation,_U(y));
+    double z = ns.attr<double>(translation,_U(z));
     pos = Position(x,y,z);
   }
   if ( rotation.ptr() )   {
-    double x  = ns.attr<double>(rotation,_U(x));
-    double y  = ns.attr<double>(rotation,_U(y));
-    double z  = ns.attr<double>(rotation,_U(z));
+    double x = ns.attr<double>(rotation,_U(x));
+    double y = ns.attr<double>(rotation,_U(y));
+    double z = ns.attr<double>(rotation,_U(z));
     rot = RotationZYX(z,y,x);
   }
+  else if ( refRotation.ptr() )   {
+    rot = ns.rotation(refRotation.nameStr());
+  }
+  *tr = Transform3D(rot,pos);
+}
+
+/// Converter for <PosPart/> tags
+template <> void Converter<pospart>::operator()(xml_h element) const {
+  Namespace ns(_param<ParsingContext>());
+  xml_dim_t   e(element);
+  int         copy        = e.attr<int>(_CMU(copyNumber));
+  string      parent_nam  = ns.attr<string>(e.child(_CMU(rParent)),_U(name));
+  string      child_nam   = ns.attr<string>(e.child(_CMU(rChild)),_U(name));
+  Volume      parent      = ns.volume(parent_nam);
+  Volume      child       = ns.volume(child_nam, false);
+  
+  printout(ns.context->debug_placements ? ALWAYS : DEBUG, "DDCMS",
+           "+++ %s Parent: %-24s [%s] Child: %-32s [%s] copy:%d",
+           e.tag().c_str(),
+           parent_nam.c_str(), parent.isValid() ? "VALID" : "INVALID",
+           child_nam.c_str(),  child.isValid()  ? "VALID" : "INVALID",
+           copy);
   PlacedVolume pv;
-  if ( child.isValid() )  {
-    if ( !translation.ptr() && !rotation.ptr() )
-      pv = parent.placeVolume(child);
-    else if ( translation.ptr() && !rotation.ptr() )
-      pv = parent.placeVolume(child,pos);
-    else if ( !translation.ptr() && rotation.ptr() )
-      pv = parent.placeVolume(child,rot);
-    else  {
-      Transform3D trafo(rot,pos);
-      pv = parent.placeVolume(child,rot);
-    }
+  if ( child.isValid() )   {
+    Transform3D trafo;
+    Converter<transform3d>(description,param,&trafo)(element);
+    pv = parent.placeVolume(child,trafo);
   }
   if ( !pv.isValid() )   {
-    printout(ERROR,"DDCMS","+++ Placement FAILED!");
+    printout(ERROR,"DDCMS","+++ Placement FAILED! Parent:%s Child:%s Valid:%s",
+             parent.name(), child_nam.c_str(), yes_no(child.isValid()));
   }
 }
 
+template <typename TYPE>
+static void convert_boolean(ParsingContext* ctx, xml_h element)   {
+  Namespace   ns(ctx);
+  xml_dim_t   e(element);
+  string      nam = e.nameStr();
+  Solid       solids[2];
+  Solid       boolean;
+  int cnt=0;
+
+  for(xml_coll_t c(element, _CMU(rSolid)); cnt<2 && c; ++c, ++cnt)
+    solids[cnt] = ns.solid(c.attr<string>(_U(name)));
+
+  if ( cnt != 2 )   {
+    except("DDCMS","+++ Failed to create blooean solid %s. Found only %d parts.",nam.c_str(), cnt);
+  }
+  printout(ns.context->debug_placements ? ALWAYS : DEBUG, "DDCMS",
+           "+++ SubtractionSolid: %s Left: %-32s Right: %-32s",
+           nam.c_str(), solids[0]->GetName(), solids[1]->GetName());
+
+  if ( solids[0].isValid() && solids[1].isValid() )  {
+    Transform3D trafo;
+    Converter<transform3d>(*ctx->description,ctx,&trafo)(element);
+    boolean = TYPE(solids[0],solids[1],trafo);
+  }
+  if ( !boolean.isValid() )
+    except("DDCMS","+++ FAILED to construct subtraction solid: %s",nam.c_str());
+  ns.addSolid(nam,boolean);
+}
+
+/// Converter for <SubtractionSolid/> tags
+template <> void Converter<unionsolid>::operator()(xml_h element) const   {
+  convert_boolean<UnionSolid>(_param<ParsingContext>(),element);
+}
+
+/// Converter for <SubtractionSolid/> tags
+template <> void Converter<subtractionsolid>::operator()(xml_h element) const   {
+  convert_boolean<SubtractionSolid>(_param<ParsingContext>(),element);
+}
+
+/// Converter for <SubtractionSolid/> tags
+template <> void Converter<intersectionsolid>::operator()(xml_h element) const   {
+  convert_boolean<IntersectionSolid>(_param<ParsingContext>(),element);
+}
+
 /// Converter for <Polycone/> tags
 template <> void Converter<polycone>::operator()(xml_h element) const {
   Namespace ns(_param<ParsingContext>());
   xml_dim_t e(element);
-  string nam = e.nameStr();
+  string nam      = e.nameStr();
   double startPhi = ns.attr<double>(e,_CMU(startPhi));
   double deltaPhi = ns.attr<double>(e,_CMU(deltaPhi));
   vector<double> z, rmin, rmax;
@@ -432,33 +552,64 @@ template <> void Converter<polycone>::operator()(xml_h element) const {
     z.push_back(ns.attr<double>(zplane,_CMU(z)));
   }
   printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
-           "+++ Processing shape of type %s : %s",e.tag().c_str(), nam.c_str());
-  printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
-           "+++    startPhi=%10.3f [rad] deltaPhi=%10.3f [rad]  %4ld z-planes",
+           "+   Polycone: startPhi=%10.3f [rad] deltaPhi=%10.3f [rad]  %4ld z-planes",
            startPhi, deltaPhi, z.size());
-  Polycone pc(startPhi,deltaPhi,rmin,rmax,z);
-  ns.context->shapes[nam] = pc.setName(nam);
+  ns.addSolid(nam, Polycone(startPhi,deltaPhi,rmin,rmax,z));
 }
 
-/// Converter for <Tubs/> tags
-template <> void Converter<tubs>::operator()(xml_h element) const {
+/// Converter for <Torus/> tags
+template <> void Converter<torus>::operator()(xml_h element) const   {
   Namespace ns(_param<ParsingContext>());
   xml_dim_t e(element);
-  string nam  = e.nameStr();
-  double dz   = ns.attr<double>(e,_CMU(dz));
-  double rmin = ns.attr<double>(e,_CMU(rMin));
-  double rmax = ns.attr<double>(e,_CMU(rMax));
+  string nam      = e.nameStr();
+  double r        = ns.attr<double>(e,_CMU(torusRadius));
+  double rinner   = ns.attr<double>(e,_CMU(innerRadius));
+  double router   = ns.attr<double>(e,_CMU(outerRadius));
   double startPhi = ns.attr<double>(e,_CMU(startPhi));
   double deltaPhi = ns.attr<double>(e,_CMU(deltaPhi));
+  printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
+           "+   Torus:    r=%10.3f [cm] r_inner=%10.3f [cm] r_outer=%10.3f [cm]"
+           " startPhi=%10.3f [rad] deltaPhi=%10.3f [rad]",
+           r, rinner, router, startPhi, deltaPhi);
+  ns.addSolid(nam, Torus(r, rinner, router, startPhi, deltaPhi));
+}
 
+/// Converter for <Trapezoid/> tags
+template <> void Converter<trapezoid>::operator()(xml_h element) const {
+  Namespace ns(_param<ParsingContext>());
+  xml_dim_t e(element);
+  string nam      = e.nameStr();
+  double dz       = ns.attr<double>(e,_U(dz));
+  double alp1     = ns.attr<double>(e,_CMU(alp1));
+  double bl1      = ns.attr<double>(e,_CMU(bl1));
+  double tl1      = ns.attr<double>(e,_CMU(tl1));
+  double h1       = ns.attr<double>(e,_CMU(h1));
+  double alp2     = ns.attr<double>(e,_CMU(alp2));
+  double bl2      = ns.attr<double>(e,_CMU(bl2));
+  double tl2      = ns.attr<double>(e,_CMU(tl2));
+  double h2       = ns.attr<double>(e,_CMU(h2));
+  double phi      = ns.attr<double>(e,_U(phi));
+  double theta    = ns.attr<double>(e,_U(theta));
   printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
-           "+++ Processing shape of type %s : %s",e.tag().c_str(), nam.c_str());
+           "+   Trapezoid:  dz=%10.3f [cm] alp1:%.3f bl1=%.3f tl1=%.3f alp2=%.3f bl2=%.3f tl2=%.3f h2=%.3f phi=%.3f theta=%.3f",
+           dz, alp1, bl1, tl1, h1, alp2, bl2, tl2, h2, phi, theta);
+  ns.addSolid(nam, Trap(dz, theta, phi, h1, bl1, tl1, alp1, h2, bl2, tl2, alp2));
+}
+
+/// Converter for <Tubs/> tags
+template <> void Converter<tubs>::operator()(xml_h element) const {
+  Namespace ns(_param<ParsingContext>());
+  xml_dim_t e(element);
+  string nam      = e.nameStr();
+  double dz       = ns.attr<double>(e,_CMU(dz));
+  double rmin     = ns.attr<double>(e,_CMU(rMin));
+  double rmax     = ns.attr<double>(e,_CMU(rMax));
+  double startPhi = ns.attr<double>(e,_CMU(startPhi));
+  double deltaPhi = ns.attr<double>(e,_CMU(deltaPhi));
   printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
-           "+++    dz=%10.3f [cm] rmin=%10.3f [cm] rmax=%10.3f [cm]"
+           "+   Tubs:     dz=%10.3f [cm] rmin=%10.3f [cm] rmax=%10.3f [cm]"
            " startPhi=%10.3f [rad] deltaPhi=%10.3f [rad]", dz, rmin, rmax, startPhi, deltaPhi);
-
-  Tube tube(rmin,rmax,dz,startPhi,deltaPhi);
-  ns.context->shapes[nam] = tube.setName(nam);
+  ns.addSolid(nam, Tube(rmin,rmax,dz,startPhi,deltaPhi));
 }
 
 /// Converter for <Box/> tags
@@ -469,20 +620,31 @@ template <> void Converter<box>::operator()(xml_h element) const {
   double dx  = ns.attr<double>(e,_CMU(dx));
   double dy  = ns.attr<double>(e,_CMU(dy));
   double dz  = ns.attr<double>(e,_CMU(dz));
-
   printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
-           "+++ Processing shape of type %s : %s",e.tag().c_str(), nam.c_str());
-  printout(ns.context->debug_shapes ? ALWAYS : DEBUG, "DDCMS",
-           "+++    dx=%10.3f [cm] dy=%10.3f [cm] dz=%10.3f [cm]", dx, dy, dz);
-  Box box(dx,dy,dz);
-  ns.context->shapes[nam] = box.setName(nam);
+           "+   Box:      dx=%10.3f [cm] dy=%10.3f [cm] dz=%10.3f [cm]", dx, dy, dz);
+  ns.addSolid(nam, Box(dx,dy,dz));
+}
+
+/// DD4hep specific Converter for <Include/> tags: process only the constants
+template <> void Converter<include_load>::operator()(xml_h element) const   {
+  xml::Document doc = xml::DocumentHandler().load(element, element.attr_value(_U(ref)));
+  string fname = xml::DocumentHandler::system_path(doc.root());
+  printout(_param<ParsingContext>()->debug_includes ? ALWAYS : DEBUG,
+           "DDCMS","+++ Processing the CMS detector description %s",fname.c_str());
+  _option<resolve>()->includes.push_back(doc);
 }
 
-/// DD4hep specific Converter for <Include/> tags
-template <> void Converter<include>::operator()(xml_h element) const   {
-  xml::DocumentHolder doc(xml::DocumentHandler().load(element, element.attr_value(_U(ref))));
-  xml_h  node = doc.root();
-  Converter<dddefinition>(description,_param<ParsingContext>())(node);
+/// DD4hep specific Converter for <Include/> tags: process only the constants
+template <> void Converter<include_unload>::operator()(xml_h element) const   {
+  string fname = xml::DocumentHandler::system_path(element);
+  xml::DocumentHolder(xml_elt_t(element).document()).assign(0);
+  printout(_param<ParsingContext>()->debug_includes ? ALWAYS : DEBUG,
+           "DDCMS","+++ Finished processing %s",fname.c_str());
+}
+
+/// DD4hep specific Converter for <Include/> tags: process only the constants
+template <> void Converter<include_constants>::operator()(xml_h element) const   {
+  xml_coll_t(element, _CMU(ConstantsSection)).for_each(Converter<constantssection>(description,param,optional));
 }
 
 /// Converter for <Algorithm/> tags
@@ -497,9 +659,17 @@ template <> void Converter<algorithm>::operator()(xml_h element) const  {
 
     // SensitiveDetector and Segmentation currently are undefined. Let's keep it like this
     // until we found something better.....
-
+    printout(ns.context->debug_algorithms ? ALWAYS : DEBUG,
+             "DDCMS","+++ Start executing algorithm %s....",type.c_str());
+    long ret = PluginService::Create<long>(type, &description, ns.context, &element, &sd);
+    if ( ret == 1 )    {
+      printout(ns.context->debug_algorithms ? ALWAYS : DEBUG,
+               "DDCMS", "+++ Executed algorithm: %08lX = %s", ret, name.c_str());
+      return;      
+    }
+#if 0
     DetElement det(PluginService::Create<NamedObject*>(type, &description, ns.context, &element, &sd));
-    if (det.isValid()) {
+    if (det.isValid())    {
       // setChildTitles(make_pair(name, det));
       if ( sd.isValid() )  {
         det->flag |= DetElement::Object::HAVE_SENSITIVE_DETECTOR;
@@ -509,15 +679,15 @@ template <> void Converter<algorithm>::operator()(xml_h element) const  {
         seg->detector  = det;
       }
     }
-#if 0
     if (!det.isValid()) {
       PluginDebug dbg;
       PluginService::Create<NamedObject*>(type, &description, ns.context, &element, &sd);
       except("DDCMS","Failed to execute subdetector creation plugin. " + dbg.missingFactory(type));
     }
+    description.addDetector(det);
 #endif
     ///description.addDetector(det);
-    printout(ERROR, "DDCMS", "++ FAILED  NOT ADDING SUBDETECTOR %s", name.c_str());
+    printout(ERROR, "DDCMS", "++ FAILED  NOT ADDING SUBDETECTOR %08lX = %s",ret, name.c_str());
     return;
   }
   catch (const exception& exc) {
@@ -534,10 +704,13 @@ template <> void Converter<debug>::operator()(xml_h dbg) const {
   Namespace ns(_param<ParsingContext>());
   if ( dbg.hasChild(_CMU(debug_constants)) )  ns.context->debug_constants  = true;
   if ( dbg.hasChild(_CMU(debug_materials)) )  ns.context->debug_materials  = true;
+  if ( dbg.hasChild(_CMU(debug_rotations)) )  ns.context->debug_rotations  = true;
   if ( dbg.hasChild(_CMU(debug_shapes)) )     ns.context->debug_shapes     = true;
   if ( dbg.hasChild(_CMU(debug_volumes)) )    ns.context->debug_volumes    = true;
   if ( dbg.hasChild(_CMU(debug_placements)) ) ns.context->debug_placements = true;
   if ( dbg.hasChild(_CMU(debug_namespaces)) ) ns.context->debug_namespaces = true;
+  if ( dbg.hasChild(_CMU(debug_includes))   ) ns.context->debug_includes   = true;
+  if ( dbg.hasChild(_CMU(debug_algorithms)) ) ns.context->debug_algorithms = true;
 }
 
 template <> void Converter<vis_apply>::operator()(xml_h /* dddefinition */) const {
@@ -559,36 +732,140 @@ template <> void Converter<vis_apply>::operator()(xml_h /* dddefinition */) cons
   VisPatcher(description).patch();
 }
 
+template <> void Converter<resolve>::operator()(xml_h /* element */) const {
+  ParsingContext* ctx = _param<ParsingContext>();
+  resolve*        res = _option<resolve>();
+  Namespace       ns(ctx);
+  int count = 0;
+
+  printout(ctx->debug_constants ? ALWAYS : DEBUG,
+           "DDCMS","+++ RESOLVING %ld unknown constants.....",res->unresolvedConst.size());
+  while ( !res->unresolvedConst.empty() )   {
+    for(auto i=res->unresolvedConst.begin(); i!=res->unresolvedConst.end(); ++i )   {
+      const string& n = (*i).first;
+      string  rep;
+      string& v   = (*i).second;
+      size_t idx, idq;
+      for(idx=v.find('[',0); idx != string::npos; idx = v.find('[',idx+1) )   {
+        idq = v.find(']',idx+1);
+        rep = v.substr(idx+1,idq-idx-1);
+        auto r = res->allConst.find(rep);
+        if ( r != res->allConst.end() )  {
+          rep = "("+(*r).second+")";
+          v.replace(idx,idq-idx+1,rep);
+        }
+      }
+      if ( v.find(']') == string::npos )  {
+        if ( v.find("-+") != string::npos || v.find("+-") != string::npos )   {
+          while ( (idx=v.find("-+")) != string::npos )
+            v.replace(idx,2,"-");
+          while ( (idx=v.find("+-")) != string::npos )
+            v.replace(idx,2,"-");
+        }
+        printout(ctx->debug_constants ? ALWAYS : DEBUG,
+                 "DDCMS","+++ [%06ld] ----------  %-40s = %s",
+                 res->unresolvedConst.size()-1,n.c_str(),res->originalConst[n].c_str());
+        ns.addConstantNS(n, v, "number");
+        res->unresolvedConst.erase(i);
+        break;
+      }
+    }
+    if ( ++count > 1000 ) break;
+  }
+  if ( !res->unresolvedConst.empty() )   {
+    for(const auto& e : res->unresolvedConst )
+      printout(ERROR,"DDCMS","+++ Unresolved constant: %-40s = %s.",e.first.c_str(), e.second.c_str());
+    except("DDCMS","++ FAILED to resolve %ld constant entries:",res->unresolvedConst.size());
+  }
+  res->unresolvedConst.clear();
+  res->originalConst.clear();
+  res->allConst.clear();
+}
+
+template <> void Converter<print_xml_doc>::operator()(xml_h element) const {
+  string fname = xml::DocumentHandler::system_path(element);
+  printout(_param<ParsingContext>()->debug_includes ? ALWAYS : DEBUG,
+           "DDCMS","+++ Processing data from file:%s",fname.c_str());
+}
+
 /// Converter for <DDDefinition/> tags
-template <> void Converter<dddefinition>::operator()(xml_h element) const {
+static long load_dddefinition(Detector& description, xml_h element) {
   static int num_calls = 0;
-  static ParsingContext ctxt;
+  static ParsingContext ctxt(&description);
+  Namespace ns(ctxt);
   xml_elt_t dddef(element);
   string fname = xml::DocumentHandler::system_path(element);
   bool open_geometry  = true;
   bool close_geometry = true;
   ++num_calls;
 
-  Path   path(fname);
-  string ns = path.filename().substr(0,path.filename().rfind('.'));
-  ctxt.namespaces.push_back(ns+'_');
+  //Path   path(fname);
+  //string ns = path.filename().substr(0,path.filename().rfind('.'));
+  //ctxt.namespaces.push_back(ns+'_');
   xml_coll_t(dddef, _U(debug)).for_each(Converter<debug>(description,&ctxt));
   
   // Here we define the order how XML elements are processed.
   // Be aware of dependencies. This can only defined once.
   // At the end it is a limitation of DOM....
   printout(INFO,"DDCMS","+++ Processing the CMS detector description %s",fname.c_str());
-  xml_coll_t(dddef, _CMU(ConstantsSection)).for_each(Converter<constantssection>(description,&ctxt));
-  xml_coll_t(dddef, _CMU(VisSection)).for_each(Converter<vissection>(description,&ctxt));
-  xml_coll_t(dddef, _CMU(IncludeSection)).for_each(_CMU(Include), Converter<include>(description,&ctxt));
-
-  xml_coll_t(dddef, _CMU(RotationSection)).for_each(Converter<rotationsection>(description,&ctxt));
-  xml_coll_t(dddef, _CMU(MaterialSection)).for_each(Converter<materialsection>(description,&ctxt));
-
+  if ( num_calls == 1 )  {
+    resolve res;
+    xml::Document d;
+    Converter<print_xml_doc> print_doc(description,&ctxt);
+    print_doc((d=dddef.document()).root());
+    xml_coll_t(dddef, _CMU(ConstantsSection)).for_each(Converter<constantssection>(description,&ctxt,&res));
+    xml_coll_t(dddef, _CMU(VisSection)).for_each(Converter<vissection>(description,&ctxt));
+    xml_coll_t(dddef, _CMU(RotationSection)).for_each(Converter<rotationsection>(description,&ctxt));
+    xml_coll_t(dddef, _CMU(MaterialSection)).for_each(Converter<materialsection>(description,&ctxt));
+
+    xml_coll_t(dddef, _CMU(IncludeSection)).for_each(_CMU(Include), Converter<include_load>(description,&ctxt,&res));
+    try  {
+      for(xml::Document doc : res.includes ) Converter<include_constants>(description,&ctxt,&res)((d=doc).root());
+      // Before we continue, we have to resolve all constants NOW!
+      Converter<resolve>(description,&ctxt,&res)(dddef);
+      // Now we can process the include files one by one.....
+      for(xml::Document doc : res.includes )   {
+        print_doc((d=doc).root());
+        xml_coll_t(doc.root(),_CMU(MaterialSection)).for_each(Converter<materialsection>(description,&ctxt));
+      }
+      ctxt.geo_inited = true;
+      description.init();
+      ns.addVolume(description.worldVolume());
+      for(xml::Document doc : res.includes )  {
+        print_doc((d=doc).root());
+        xml_coll_t(doc.root(),_CMU(RotationSection)).for_each(Converter<rotationsection>(description,&ctxt));
+      }
+      for(xml::Document doc : res.includes )  {
+        print_doc((d=doc).root());
+        xml_coll_t(doc.root(), _CMU(SolidSection)).for_each(Converter<solidsection>(description,&ctxt));
+      }
+      for(xml::Document doc : res.includes )  {
+        print_doc((d=doc).root());
+        xml_coll_t(doc.root(), _CMU(LogicalPartSection)).for_each(Converter<logicalpartsection>(description,&ctxt));
+      }
+      for(xml::Document doc : res.includes )  {
+        print_doc((d=doc).root());
+        xml_coll_t(doc.root(), _CMU(Algorithm)).for_each(Converter<algorithm>(description,&ctxt));
+      }
+      for(xml::Document doc : res.includes )  {
+        print_doc((d=doc).root());
+        xml_coll_t(doc.root(), _CMU(PosPartSection)).for_each(Converter<pospartsection>(description,&ctxt));
+      }
+    }
+    catch(const exception& e)   {
+      printout(ERROR,"DDCMS","Exception while processing xml source:%s",d.uri().c_str());
+      printout(ERROR,"DDCMS","----> %s", e.what());
+      throw;
+    }
+    /// Unload all XML files after processing
+    for(xml::Document doc : res.includes ) Converter<include_unload>(description,&ctxt,&res)(doc.root());
+  }
+  // Now process the actual geometry items
   xml_coll_t(dddef, _CMU(SolidSection)).for_each(Converter<solidsection>(description,&ctxt));
   xml_coll_t(dddef, _CMU(LogicalPartSection)).for_each(Converter<logicalpartsection>(description,&ctxt));
+  xml_coll_t(dddef, _CMU(Algorithm)).for_each(Converter<algorithm>(description,&ctxt));
   xml_coll_t(dddef, _CMU(PosPartSection)).for_each(Converter<pospartsection>(description,&ctxt));
-
+#if 0
   /// Analyse algorithms to be called
   if ( !ctxt.geo_inited && dddef.hasChild(_CMU(Algorithm)) )  {
     ctxt.geo_inited = true;
@@ -598,7 +875,7 @@ template <> void Converter<dddefinition>::operator()(xml_h element) const {
     ctxt.geo_inited = true;
     description.init();
   }
-  xml_coll_t(dddef, _CMU(Algorithm)).for_each(Converter<algorithm>(description,&ctxt));
+#endif
 
   /// This should be the end of all processing....close the geometry
   if ( --num_calls == 0 && close_geometry )  {
@@ -608,11 +885,6 @@ template <> void Converter<dddefinition>::operator()(xml_h element) const {
   }
   ctxt.namespaces.pop_back();
   printout(INFO,"DDDefinition","+++ Finished processing %s",fname.c_str());
-}
-
-static long load_dddefinition(Detector& description, xml_h element) {
-  Converter<dddefinition>converter(description);
-  converter(element);
   return 1;
 }
 
diff --git a/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp b/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp
index 69c649024a4b2fe97669ceec66989e79e5befa80..44437faab4930c5ab81f232c7af260e03a54a7a4 100644
--- a/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp
+++ b/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp
@@ -19,7 +19,6 @@
 #include "DD4hep/DetFactoryHelper.h"
 #include "DD4hep/Printout.h"
 #include "DDCMS/DDCMSPlugins.h"
-#include "CLHEP/Units/SystemOfUnits.h"
 
 // C/C++ include files
 #include <sstream>
@@ -29,10 +28,10 @@ using namespace dd4hep;
 using namespace dd4hep::detail;
 using namespace dd4hep::cms;
 
-static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e, SensitiveDetector& /* sens */)  {
+static long create_element(Detector& description, ParsingContext& ctxt, xml_h e, SensitiveDetector& /* sens */)  {
   stringstream  str;
   PlacedVolume  pv;
-  Namespace     ns(ctxt);
+  Namespace     ns(ctxt, e, true);
   AlgoArguments args(ctxt, e);
   string        parentName = args.parentName();
 
@@ -51,9 +50,7 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
   string coolMat   = args.value<string>("CoolMaterial");
   string tubeMat   = args.value<string>("CoolTubeMaterial");
 
-  str.str("");
-  str << "DDPixBarLayerAlgo debug: Parent " << parentName 
-      << " NameSpace " << ns.name << "\n"
+  str << "Parent " << parentName << " NameSpace " << ns.name << "\n"
       << "\tLadders " << number << "\tGeneral Material " 
       << genMat << "\tLength " << layerDz << "\tSensorEdge "
       << sensorEdge << "\tSpecification of Cooling Pieces:\n"
@@ -61,19 +58,17 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
       << " Side " << coolSide << " Thickness of Shell " 
       << coolThick << " Radial distance " << coolDist 
       << " Materials " << coolMat << ", " << tubeMat;
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(INFO,"DDPixBarLayerAlgo",str);
 
   vector<string> ladder      = args.value<vector<string> >("LadderName");
   vector<double> ladderWidth = args.value<vector<double> >("LadderWidth");
   vector<double> ladderThick = args.value<vector<double> >("LadderThick");
   
-  str.str("");
-  str << "DDPixBarLayerAlgo debug: Full Ladder " 
-      << ladder[0] << " width/thickness " << ladderWidth[0]
+  str << "Full Ladder " << ladder[0] << " width/thickness " << ladderWidth[0]
       << ", " << ladderThick[0] << "\tHalf Ladder " 
       << ladder[1] << " width/thickness " << ladderWidth[1]
       << ", " << ladderThick[1];
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
   string mother = parentName;
   const std::string &idName = mother;
@@ -86,26 +81,23 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
   double rmin = (coolDist-0.5*(d1+d2))*cos(0.5*dphi)-0.5*ladderThick[0];
   double rmax = (coolDist+0.5*(d1+d2))*cos(0.5*dphi)+0.5*ladderThick[0];
   double rmxh = rmax - 0.5*ladderThick[0] + ladderThick[1];
-  str.str("");
-  str << "DDPixBarLayerAlgo test: Rmin/Rmax " << rmin 
+  str << "Rmin/Rmax " << rmin 
       << ", " << rmax << " d1/d2 " << d1 << ", " << d2 
       << " x1/x2 " << x1 << ", " << x2;
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
   double rtmi = rmin + 0.5*ladderThick[0] - ladderThick[1];
   double rtmx = sqrt(rmxh*rmxh+ladderWidth[1]*ladderWidth[1]);
   Solid solid = Tube(rtmi, rtmx, 0.5*layerDz, 0, CLHEP::twopi);
   solid.setName(idName);
   str.str("");
-  str << "DDPixBarLayerAlgo test: " 
-      << idName << " Tubs made of " 
+  str << "IDname "<< idName << " Tubs made of " 
       << genMat << " from 0 to " << CLHEP::twopi/CLHEP::deg 
       << " with Rin " << rtmi << " Rout " << rtmx 
       << " ZHalf " << 0.5*layerDz;
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
-  Material matter;
-  Volume   layer(solid.name(), solid, description.material(genMat));
+  Volume layer(solid.name(), solid, ns.material(genMat));
 
   double rr = 0.5*(rmax+rmin);
   double dr = 0.5*(rmax-rmin);
@@ -113,13 +105,12 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
   std::string name = idName + "CoolTube";
   solid = Trap(0.5*coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0);
   solid.setName(idName+"CoolTube");
-  str.str("");
-  str << "DDPixBarLayerAlgo test: " <<solid.name() 
+  str << "Solid " << solid.name() 
       << " Trap made of " << tubeMat << " of dimensions " 
       << 0.5*coolDz << ", 0, 0, " << h1 << ", " << d2 
       << ", " << d1 << ", 0, " << h1 << ", " << d2 << ", " 
       << d1 << ", 0";
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
   Volume coolTube(solid.name(), solid, description.material(tubeMat));
   
   h1  -= coolThick;
@@ -128,30 +119,27 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
   solid = Trap(0.5*coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0);
   solid.setName(idName + "Coolant");
   
-  str.str("");
-  str << "DDPixBarLayerAlgo test: " <<solid.name() 
+  str << "Solid " << solid.name() 
       << " Trap made of " << coolMat << " of dimensions " 
       << 0.5*coolDz << ", 0, 0, " << h1 << ", " << d2
       << ", " << d1 << ", 0, " << h1 << ", " << d2 << ", " 
       << d1 << ", 0";
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
   Volume cool(solid.name(), solid, description.material(coolMat));
-
   //cpv.position(cool, coolTube, 1, DDTranslation(0.0, 0.0, 0.0), DDRotation());
   pv = coolTube.placeVolume(cool);
-  str.str("");
-  str << "DDPixBarLayerAlgo test: " << cool.name() 
+  str << "Cool " << cool.name() 
       << " number 1 positioned in " << coolTube.name() 
       << " at (0,0,0) with no rotation";
-  printout(DEBUG,"PixelGeom",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
   string ladderFull = ladder[0];
   string ladderHalf = ladder[1];
   int nphi=number/2, copy=1, iup=-1;
   double phi0 = 90*CLHEP::deg;
-  Volume ladderHalfVol = ctxt.volume(ladderHalf);
-  Volume ladderFullVol = ctxt.volume(ladderFull);
+  Volume ladderHalfVol = ns.volume(ladderHalf);
+  Volume ladderFullVol = ns.volume(ladderFull);
 
   for (int i=0; i<number; i++) {
     double phi = phi0 + i*dphi;
@@ -166,23 +154,21 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
       rots = idName + std::to_string(copy);
       phix = phi-90*CLHEP::deg;
       phiy = 90*CLHEP::deg+phix;
-      str.str("");
-      str << "DDPixBarLayerAlgo test: Creating a new "
-                            << "rotation: " << rots << "\t90., " 
-                            << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg 
-                            << ", 0, 0";
-      printout(DEBUG,"PixelGeom",str.str().c_str());
+      str << "Creating a new "
+          << "rotation: " << rots << "\t90., " 
+          << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg 
+          << ", 0, 0";
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
       rot = make_rotation3D(90*CLHEP::deg, phix, 90*CLHEP::deg, phiy, 0.,0.);
 
       //cpv.position(ladderHalf, layer, copy, tran, rot);
       pv = layer.placeVolume(ladderHalfVol, Transform3D(rot,tran));
       if ( !pv.isValid() )  {  }
-      str.str("");
-      str << "DDPixBarLayerAlgo test: " << ladderHalfVol.name()
+      str << "ladderHalfVol: " << ladderHalfVol.name()
           << " number " << copy << " positioned in " 
           << layer.name() << " at " << tran << " with " 
           << rot;
-      printout(DEBUG,"PixelGeom",str.str().c_str());
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
       copy++;
       iup  = -1;
@@ -191,23 +177,20 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
       rots = idName + std::to_string(copy);
       phix = phi+90*CLHEP::deg;
       phiy = 90*CLHEP::deg+phix;
-      str.str("");
-      str << "DDPixBarLayerAlgo test: Creating a new "
-          << "rotation: " << rots << "\t90., " 
+      str << "Creating a new rotation: " << rots << "\t90., " 
           << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg 
           << ", 0, 0";
-      printout(DEBUG,"PixelGeom",str.str().c_str());
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
       rot = make_rotation3D(90*CLHEP::deg, phix, 90*CLHEP::deg, phiy, 0.,0.);
       //cpv.position(ladderHalf, layer, copy, tran, rot);
       pv = layer.placeVolume(ladderHalfVol, Transform3D(rot,tran));
       if ( !pv.isValid() )  {  }
-      str.str("");
-      str << "DDPixBarLayerAlgo test: " << ladderHalfVol.name()
+      str << "ladderHalfVol: " << ladderHalfVol.name()
           << " number " << copy << " positioned in " 
           << layer.name() << " at " << tran << " with " 
           << rot;
-      printout(DEBUG,"PixelGeom",str.str().c_str());
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
       copy++;
     } else {
       iup  =-iup;
@@ -217,24 +200,22 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
       if (iup > 0) phix = phi-90*CLHEP::deg;
       else         phix = phi+90*CLHEP::deg;
       phiy = phix+90.*CLHEP::deg;
-      str.str("");
       str << "DDPixBarLayerAlgo test: Creating a new "
           << "rotation: " << rots << "\t90., " 
           << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg 
           << ", 0, 0";
-      printout(DEBUG,"PixelGeom",str.str().c_str());
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
 
       rot = make_rotation3D(90*CLHEP::deg, phix, 90*CLHEP::deg, phiy, 0.,0.);
 
       //cpv.position(ladderFull, layer, copy, tran, rot);
       pv = layer.placeVolume(ladderFullVol, Transform3D(rot,tran));
       if ( !pv.isValid() )  {  }
-      str.str("");
-      str << "DDPixBarLayerAlgo test: " << ladderFullVol.name()
+      str << "test: " << ladderFullVol.name()
           << " number " << copy << " positioned in " 
           << layer.name() << " at " << tran << " with " 
           << rot;
-      printout(DEBUG,"PixelGeom",str.str().c_str());
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
       copy++;
     }
     rrr  = coolDist*cos(0.5*dphi);
@@ -243,32 +224,36 @@ static Ref_t create_element(Detector& description, ParsingContext& ctxt, xml_h e
     phix = phi+0.5*dphi;
     if (iup > 0) phix += 180*CLHEP::deg;
     phiy = phix+90.*CLHEP::deg;
-    str.str("");
-    str << "DDPixBarLayerAlgo test: Creating a new "
-        << "rotation: " << rots << "\t90., " 
+    str << "Creating a new rotation: " << rots << "\t90., " 
         << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg 
         << ", 0, 0";
-    printout(DEBUG,"PixelGeom",str.str().c_str());
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
     rot = make_rotation3D(90*CLHEP::deg, phix, 90*CLHEP::deg, phiy, 0.,0.);
     //cpv.position(coolTube, layer, i+1, tran, rot);
     pv = layer.placeVolume(coolTube,Transform3D(rot,tran));
     if ( !pv.isValid() )  {  }
-    str.str("");
-    str << "DDPixBarLayerAlgo test: " << coolTube.name() 
+    str << "coolTube: " << coolTube.name() 
         << " number " << i+1 << " positioned in " 
         << layer.name() << " at " << tran << " with "<< rot;
-    printout(DEBUG,"PixelGeom",str.str().c_str());
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDPixBarLayerAlgo",str);
   }
 
+  ns.addVolumeNS(layer);
+  //nn.addVolume(assembly);
+  printout(INFO,"DDPixBarLayerAlgo","Layer: %s assembly:%s",layer.name(),"---");
+#if 0
+  string     det_name = idName;
+  Assembly   assembly(det_name);
   // Now we have built the layer.....create the DetElement object
-  string     det_name = "Layer_"+idName;
   DetElement det_elt(det_name,0);
-  Assembly   assembly(det_name);
-  Volume     motherVol = description.pickMotherVolume(det_elt);
   pv = assembly.placeVolume(layer);
-  pv = motherVol.placeVolume(assembly);
+
   det_elt.setPlacement(pv);
-  return det_elt;
+  description.addDetector(det_elt);
+  Volume     motherVol = description.pickMotherVolume(det_elt);
+  pv = motherVol.placeVolume(assembly);
+#endif  
+  return 1;
 }
 
 // first argument is the type from the xml file
diff --git a/DDCMS/src/plugins/DDTECCoolAlgo.cpp b/DDCMS/src/plugins/DDTECCoolAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6dd9a87fac72a9aa1cd93290c21a436c7dd2066c
--- /dev/null
+++ b/DDCMS/src/plugins/DDTECCoolAlgo.cpp
@@ -0,0 +1,83 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt,e,true);
+  AlgoArguments  args(ctxt, e);
+  int            startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1;
+  double         rPosition   = args.value<double>("RPosition");
+  vector<double> phiPosition = args.value<vector<double> >("PhiPosition");
+  vector<string> coolInsert  = args.value<vector<string> >("CoolInsert");
+  Volume         mother      = ns.volume(args.parentName());
+
+  str << "debug: Parent " << mother.name() 
+      <<" NameSpace " << ns.name << " at radial Position " << rPosition;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECCoolAlgo",str);
+  if (phiPosition.size() == coolInsert.size()) {
+    for (int i=0; i<(int)(phiPosition.size()); i++)   {
+      str << "debug: Insert[" << i << "]: "
+          << coolInsert.at(i) << " at Phi " 
+          << phiPosition.at(i)/CLHEP::deg;
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECCoolAlgo",str);
+    }
+  } else {
+    str << "ERROR: Number of inserts does not match the numer of PhiPositions!";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECCoolAlgo",str);
+  }
+
+  int copyNo  = startCopyNo;
+  // loop over the inserts to be placed
+  for (int i = 0; i < (int)(coolInsert.size()); i++) {
+    Volume child = ns.volume(ns.real_name(coolInsert.at(i)));
+    // get positions
+    double xpos =  rPosition*cos(phiPosition.at(i));
+    double ypos = -rPosition*sin(phiPosition.at(i));
+    // place inserts
+    Position tran(xpos, ypos, 0.0);
+    mother.placeVolume(child,tran);
+    str << "test " << child.name() << "["  
+        << copyNo << "] positioned in " << mother.name()
+        << " at " << tran
+        << " phi " << phiPosition.at(i)/CLHEP::deg << " r " 
+        << rPosition;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECCoolAlgo",str);
+    copyNo++;
+  }
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECCoolAlgo","Finished....");
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTECCoolAlgo,algorithm)
+
diff --git a/DDCMS/src/plugins/DDTECModuleAlgo.cpp b/DDCMS/src/plugins/DDTECModuleAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4192461ffb48bd9298af53dd0bab048fc20628a6
--- /dev/null
+++ b/DDCMS/src/plugins/DDTECModuleAlgo.cpp
@@ -0,0 +1,645 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static void doPos(ParsingContext& ctxt, Volume toPos, Volume mother, 
+                  int /* copyNr */, double x, double y, double z, 
+                  const string& rotName)
+{
+  stringstream  str;
+  Namespace ns(ctxt);
+  mother.placeVolume(toPos,Transform3D(ns.rotation(rotName),Position(x,y,z)));
+  str << "Volume: " << mother.name() << " positioned daughter "<< mother.name();
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+}
+
+static void doPos(ParsingContext& ctxt, Volume toPos, Volume mother,
+                  bool isStereo, double rPos,
+                  double posCorrectionPhi,
+                  double x, double y, double z,
+                  string rotName)
+{
+  int           copyNr = isStereo ? 2 : 1;
+  // This has to be done so that the Mother coordinate System of a Tub resembles 
+  // the coordinate System of a Trap or Box.
+  z += rPos;
+
+  if(isStereo){
+    // z is x , x is y
+    //z+= rPos*sin(posCorrectionPhi);  <<- this is already corrected with the r position!
+    x += rPos*sin(posCorrectionPhi);
+  }
+  /////FIXME!!!  if (rotName == "NULL") rotName = standardRot;
+  doPos(ctxt,toPos,mother,copyNr,x,y,z,rotName);
+}
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream  str;
+  Namespace     ns(ctxt, e, true);
+  AlgoArguments args(ctxt, e);
+  Volume        mother      = ns.volume(args.parentName());
+
+  //variables:
+  //double         noOverlapShift   = args.value<double>("NoOverlapShift");
+  int            ringNo           = args.value<int>("RingNo");
+  bool           isStereo         = args.value<int>("isStereo") == 1;
+  bool           isRing6          = (ringNo == 6);
+  double         rPos             = args.value<double>("RPos");           //Position in R relativ to the center of the TEC ( this is the coord-sys of Tubs)
+  double         posCorrectionPhi = isStereo ? args.value<double>("PosCorrectionPhi") : 0e0; // the Phi position of the stereo Modules has to be corrected
+  string         standardRot = args.value<string>("StandardRotation");    //Rotation that aligns the mother(Tub ) coordinate System with the components
+  string         genMat = args.value<string>("GeneralMaterial");         //General material name
+  double         moduleThick = args.value<double>("ModuleThick");    //Module thickness
+  double         detTilt = args.value<double>("DetTilt");        //Tilt of stereo detector
+  double         fullHeight = args.value<double>("FullHeight");     //Height 
+  double         dlTop = args.value<double>("DlTop");          //Width at top of wafer
+  double         dlBottom = args.value<double>("DlBottom");       //Width at bottom of wafer
+  double         dlHybrid = args.value<double>("DlHybrid");       //Width at the hybrid end
+  double         frameWidth = args.value<double>("FrameWidth");     //Frame         width
+  double         frameThick = args.value<double>("FrameThick");     //              thickness
+  double         frameOver = args.value<double>("FrameOver");      //              overlap (on sides)
+  string         topFrameMat = args.value<string>("TopFrameMaterial");    //Top frame     material
+  double         topFrameHeight = args.value<double>("TopFrameHeight"); //              height
+  double         topFrameThick = args.value<double>("TopFrameThick");  //              thickness
+  double         topFrameTopWidth = args.value<double>("TopFrameTopWidth");//             Width at the top
+  double         topFrameBotWidth = args.value<double>("TopFrameBotWidth");//             Width at the bottom
+  double         topFrame2Width = isStereo ? args.value<double>("TopFrame2Width") : 0e0;  //  Stereo:2ndPart   Width
+  double         topFrame2LHeight = isStereo ? args.value<double>("TopFrame2LHeight") : 0e0;//             left  height
+  double         topFrame2RHeight = isStereo ? args.value<double>("TopFrame2RHeight") : 0e0;//             right height
+  double         topFrameZ = args.value<double>("TopFrameZ");      //              z-positions
+  string         sideFrameMat = args.value<string>("SideFrameMaterial");   //Side frame    material
+  double         sideFrameThick = args.value<double>("SideFrameThick"); //              thickness
+  double         sideFrameLWidth = args.value<double>("SideFrameLWidth"); //    Left     Width (for stereo modules upper one)
+  double         sideFrameLWidthLow = isStereo ? args.value<double>("SideFrameLWidthLow") : 0e0;//           Width (only for stereo modules: lower Width)
+  double         sideFrameLHeight = args.value<double>("SideFrameLHeight");//             Height
+  double         sideFrameLtheta = args.value<double>("SideFrameLtheta");//              angle of the trapezoid shift
+  double         sideFrameRWidth = args.value<double>("SideFrameRWidth"); //    Right    Width (for stereo modules upper one)
+  double         sideFrameRWidthLow = isStereo ? args.value<double>("SideFrameRWidthLow") : 0e0;//           Width (only for stereo modules: lower Width)
+  double         sideFrameRHeight = args.value<double>("SideFrameRHeight");//             Height
+  double         sideFrameRtheta = args.value<double>("SideFrameRtheta");//              angle of the trapezoid shift
+  vector<double> siFrSuppBoxWidth = args.value<vector<double> >("SiFrSuppBoxWidth");//    Supp.Box Width
+  vector<double> siFrSuppBoxHeight = args.value<vector<double> >("SiFrSuppBoxHeight");//            Height
+  vector<double> siFrSuppBoxYPos = args.value<vector<double> >("SiFrSuppBoxYPos");//              y-position of the supplies box (with HV an thermal sensor...)
+  double         sideFrameZ = args.value<double>("SideFrameZ");     //              z-positions
+  double         siFrSuppBoxThick = args.value<double>("SiFrSuppBoxThick");//             thickness
+  string         siFrSuppBoxMat = args.value<string>("SiFrSuppBoxMaterial"); //              material
+  string         waferMat = args.value<string>("WaferMaterial");       //Wafer         material
+  double         waferPosition = args.value<double>("WaferPosition");  //              position of the wafer (was formaly done by adjusting topFrameHeigt)
+  double         sideWidthTop = args.value<double>("SideWidthTop");   //              widths on the side Top
+  double         sideWidthBottom = args.value<double>("SideWidthBottom");//                                 Bottom
+  string         waferRot = args.value<string>("WaferRotation");       //              rotation matrix
+  string         activeMat = args.value<string>("ActiveMaterial");      //Sensitive     material
+  double         activeHeight = args.value<double>("ActiveHeight");   //              height
+  double         waferThick = args.value<double>("WaferThick");     //              wafer thickness (active = wafer - backplane)
+  string         activeRot = args.value<string>("ActiveRotation");      //              Rotation matrix
+  double         activeZ = args.value<double>("ActiveZ");        //              z-positions
+  double         backplaneThick = args.value<double>("BackPlaneThick"); //              thickness
+  double         inactiveDy = ringNo > 3 ? args.value<double>("InactiveDy") : 0e0;     //InactiveStrip  Hight of ( rings > 3)
+  double         inactivePos = ringNo > 3 ? args.value<double>("InactivePos") : 0e0;    //               y-Position 
+  string         inactiveMat = ringNo > 3 ? args.value<string>("InactiveMaterial") : string();    //               material
+  string         hybridMat = args.value<string>("HybridMaterial");      //Hybrid        material
+  double         hybridHeight = args.value<double>("HybridHeight");   //              height
+  double         hybridWidth = args.value<double>("HybridWidth");    //              width
+  double         hybridThick = args.value<double>("HybridThick");    //              thickness
+  double         hybridZ = args.value<double>("HybridZ");        //              z-positions
+  string         pitchMat = args.value<string>("PitchMaterial");       //Pitch adapter material
+  double         pitchWidth = args.value<double>("PitchWidth");     //              width
+  double         pitchHeight = args.value<double>("PitchHeight");    //              height
+  double         pitchThick = args.value<double>("PitchThick");     //              thickness
+  double         pitchZ = args.value<double>("PitchZ");         //              z-positions
+  string         pitchRot = args.value<string>("PitchRotation");       //              rotation matrix
+  string         bridgeMat = args.value<string>("BridgeMaterial");      //Bridge        material
+  double         bridgeWidth = args.value<double>("BridgeWidth");    //              width 
+  double         bridgeThick = args.value<double>("BridgeThick");    //              thickness
+  double         bridgeHeight = args.value<double>("BridgeHeight");   //              height
+  double         bridgeSep = args.value<double>("BridgeSeparation");      //              separation
+  vector<double> siReenforceHeight = args.value<vector<double> >("SiReenforcementHeight");// SiReenforcement Height
+  vector<double> siReenforceWidth = args.value<vector<double> >("SiReenforcementWidth");//             Width
+  vector<double> siReenforceYPos = args.value<vector<double> >("SiReenforcementPosY");//              Y - Position
+  double         siReenforceThick = args.value<double>("SiReenforcementThick");//             Thick
+  string         siReenforceMat = args.value<string>("SiReenforcementMaterial");  //             Materieal
+
+  str << "debug: ModuleThick " << moduleThick
+      << " Detector Tilt " << detTilt/CLHEP::deg << " Height "
+      << fullHeight << " dl(Top) " << dlTop << " dl(Bottom) "
+      << dlBottom << " dl(Hybrid) " << dlHybrid
+      << " rPos " << rPos << " standrad rotation " 
+      << standardRot;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug: Frame Width " << frameWidth 
+      << " Thickness " << frameThick << " Overlap " 
+      << frameOver;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug: Top Frame Material " 
+      << topFrameMat << " Height " << topFrameHeight 
+      << " Top Width " << topFrameTopWidth << " Bottom Width "
+      << topFrameTopWidth
+      << " Thickness " << topFrameThick <<" positioned at"
+      << topFrameZ;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug : Side Frame Material " 
+      << sideFrameMat << " Thickness " << sideFrameThick
+      << " left Leg's Width: " << sideFrameLWidth
+      << " left Leg's Height: " << sideFrameLHeight
+      << " left Leg's tilt(theta): " << sideFrameLtheta
+      << " right Leg's Width: " << sideFrameRWidth
+      << " right Leg's Height: " << sideFrameRHeight
+      << " right Leg's tilt(theta): " << sideFrameRtheta
+      << "Supplies Box's Material: " << siFrSuppBoxMat
+      << " positioned at" << sideFrameZ;
+  for (int i= 0; i < (int)(siFrSuppBoxWidth.size());i++){
+    str << " Supplies Box" << i << "'s Width: " 
+        << siFrSuppBoxWidth[i] << " Supplies Box" << i
+        <<"'s Height: " << siFrSuppBoxHeight[i]
+        << " Supplies Box" << i << "'s y Position: " 
+        << siFrSuppBoxYPos[i];
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  }
+  str << "debug: Wafer Material " 
+      << waferMat << " Side Width Top" << sideWidthTop
+      << " Side Width Bottom" << sideWidthBottom
+      << " and positioned at "<<waferPosition
+      << " positioned with rotation"	<< " matrix:"
+      << waferRot;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug: Active Material " 
+      << activeMat << " Height " << activeHeight 
+      << " rotated by " << activeRot
+      << " translated by (0,0," << -0.5 * backplaneThick << ")"
+      << " Thickness/Z"
+      << waferThick-backplaneThick << "/" << activeZ;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug: Hybrid Material " 
+      << hybridMat << " Height " << hybridHeight 
+      << " Width " << hybridWidth << " Thickness " 
+      << hybridThick << " Z"  << hybridZ;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug: Pitch Adapter Material " 
+      << pitchMat << " Height " << pitchHeight 
+      << " Thickness " << pitchThick << " position with "
+      << " rotation " << pitchRot << " at Z" << pitchZ;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "debug: Bridge Material " 
+      << bridgeMat << " Width " << bridgeWidth 
+      << " Thickness " << bridgeThick << " Height " 
+      << bridgeHeight << " Separation "<< bridgeSep;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  str << "FALTBOOT DDTECModuleAlgo debug : Si-Reenforcement Material " 
+      << sideFrameMat << " Thickness " << siReenforceThick;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
+    str << " SiReenforcement" << i << "'s Width: " 
+        << siReenforceWidth[i] << " SiReenforcement" << i 
+        << "'s Height: " << siReenforceHeight[i]
+        << " SiReenforcement" << i << "'s y Position: "
+        <<siReenforceYPos[i];
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  }
+  if(!isStereo){
+    str << "This is a normal module, in ring "<<ringNo<<"!"; 
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  } else {
+    str << "This is a stereo module, in ring "<<ringNo<<"!"; 
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    str << "Phi Position corrected by " << posCorrectionPhi << "*rad";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    str << "debug: stereo Top Frame 2nd Part left Heigt " 
+        << topFrame2LHeight << " right Height " << topFrame2RHeight 
+        << " Width " << topFrame2Width ;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    str << " left Leg's lower Width: " << sideFrameLWidthLow
+        << " right Leg's lower Width: " << sideFrameRWidthLow;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  }
+
+  // Execution part:
+
+  str << "==>> Constructing DDTECModuleAlgo: ";
+  //declarations
+  double tmp;
+  //names
+  string name;
+  string tag("Rphi");
+  if (isStereo) tag = "Stereo";
+  //usefull constants
+  const double topFrameEndZ = 0.5 * (-waferPosition + fullHeight) + pitchHeight + hybridHeight - topFrameHeight;
+  string idName     = ns.prepend(ns.obj_name(mother.name()));
+  str << "idName: " << idName << " parent " << mother.name() << " namespace " << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Solid solid;
+
+   //set global parameters
+  Material matter = ns.material(genMat);
+  double dzdif = fullHeight + topFrameHeight;
+  if(isStereo) dzdif += 0.5*(topFrame2LHeight+topFrame2RHeight);
+  
+  double dxbot = 0.5*dlBottom + frameWidth - frameOver;
+  double dxtop = 0.5*dlHybrid + frameWidth - frameOver;
+  //  topfr = 0.5*dlBottom * sin(detTilt);
+  if (isRing6) {
+    dxbot = dxtop;
+    dxtop = 0.5*dlTop    + frameWidth - frameOver;
+    //    topfr = 0.5*dlTop    * sin(detTilt);
+  }
+  double dxdif = dxtop - dxbot;
+
+  //Frame Sides
+  // left Frame
+  name    = idName + "SideFrameLeft";
+  double h1 = 0.5 * sideFrameThick;
+  double dz = 0.5 * sideFrameLHeight;
+  double bl1 = 0.5 * sideFrameLWidth;
+  double bl2 = bl1;
+  double thet = sideFrameLtheta;
+  //for stereo modules
+  if(isStereo)  bl1 = 0.5 * sideFrameLWidthLow;
+  solid = Trap(dz, thet, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+  ns.addSolidNS(name,solid);
+  str << "Solid: " << solid.name() 
+      << " Trap made of " << sideFrameMat << " of dimensions "
+      << dz << ",  "<<thet<<", 0, " << h1 << ", " << bl1 << ", "
+      << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+      << ", 0";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Volume sideFrameLeft(name, solid, ns.material(sideFrameMat));
+  ns.addVolumeNS(sideFrameLeft);
+  //translate
+  double xpos = - 0.5*topFrameBotWidth +bl2+ tan(fabs(thet)) * dz;
+  double ypos = sideFrameZ;
+  double zpos = topFrameEndZ -dz;
+  //flip ring 6
+  if (isRing6){
+    zpos *= -1;
+    xpos -= 2*tan(fabs(thet)) * dz; // because of the flip the tan(..) to be in the other direction
+  }
+  //the stereo modules are on the back of the normal ones...
+  if(isStereo) {
+    xpos = - 0.5*topFrameBotWidth + bl2*cos(detTilt) + dz*sin(fabs(thet)+detTilt)/cos(fabs(thet));
+    xpos = -xpos;
+    zpos = topFrameEndZ -topFrame2LHeight-
+      0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width)-
+      dz*cos(detTilt+fabs(thet))/cos(fabs(thet))+bl2*sin(detTilt)-0.1*CLHEP::mm;
+  }
+  //position
+  doPos(ctxt,sideFrameLeft, mother, isStereo, rPos, posCorrectionPhi, xpos,ypos,zpos,waferRot);
+
+  //right Frame
+  name    = idName + "SideFrameRight";
+  h1   = 0.5 * sideFrameThick;
+  dz   = 0.5 * sideFrameRHeight;
+  bl1  = bl2 = 0.5 * sideFrameRWidth;
+  thet = sideFrameRtheta;
+  if(isStereo) bl1 = 0.5 * sideFrameRWidthLow;
+  solid = Trap(dz, thet, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+  ns.addSolidNS(name,solid);
+  str << "Solid:\t" << solid.name() 
+      << " Trap made of " << sideFrameMat << " of dimensions "
+      << dz << ", "<<thet<<", 0, " << h1 << ", " << bl1 << ", "
+      << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+      << ", 0";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Volume sideFrameRight(name, solid, ns.material(sideFrameMat));
+  ns.addVolumeNS(sideFrameRight);
+  //translate
+  xpos =  0.5*topFrameBotWidth -bl2- tan(fabs(thet)) * dz;
+  ypos = sideFrameZ;
+  zpos = topFrameEndZ -dz ;        
+  if (isRing6){
+    zpos *= -1;
+    xpos += 2*tan(fabs(thet)) * dz; // because of the flip the tan(..) has to be in the other direction
+  }
+  if(isStereo){
+    xpos = 0.5*topFrameBotWidth - bl2*cos(detTilt) - dz*sin(fabs(detTilt-fabs(thet)))/cos(fabs(thet));
+    xpos = -xpos;
+    zpos = topFrameEndZ -topFrame2RHeight+
+      0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width)-
+      dz*cos(detTilt-fabs(thet))/cos(fabs(thet))-bl2*sin(detTilt)-0.1*CLHEP::mm;
+  }
+  //position it
+  doPos(ctxt, sideFrameRight, mother, isStereo, rPos, posCorrectionPhi,xpos,ypos,zpos,waferRot);
+
+
+  //Supplies Box(es)
+  matter  = ns.material(siFrSuppBoxMat);
+  for (int i= 0; i < (int)(siFrSuppBoxWidth.size());i++){
+    name    = idName + "SuppliesBox" + std::to_string(i);
+    
+    h1 = 0.5 * siFrSuppBoxThick;
+    dz = 0.5 * siFrSuppBoxHeight[i];
+    bl1 = bl2 = 0.5 * siFrSuppBoxWidth[i];
+    thet = sideFrameRtheta;
+    if(isStereo) thet = -atan(fabs(sideFrameRWidthLow-sideFrameRWidth)/(2*sideFrameRHeight)-tan(fabs(thet)));
+    // ^-- this calculates the lower left angel of the tipped trapezoid, which is the SideFframe...
+    
+    solid = Trap(dz, thet,0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+    str << "Solid:\t" << solid.name() 
+        << " Trap made of " << siFrSuppBoxMat << " of dimensions "
+        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
+        << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+        << ", 0";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    Volume siFrSuppBox(name, solid, matter);
+    ns.addVolumeNS(siFrSuppBox);
+    //translate
+    xpos =  0.5*topFrameBotWidth  -sideFrameRWidth - bl1-siFrSuppBoxYPos[i]*tan(fabs(thet));
+    ypos = sideFrameZ*(0.5+(siFrSuppBoxThick/sideFrameThick)); //via * so I do not have to worry about the sign of sideFrameZ
+    zpos = topFrameEndZ - siFrSuppBoxYPos[i];        
+    if (isRing6){ 
+      xpos += 2*fabs(tan(thet))*  siFrSuppBoxYPos[i]; // the flipped issue again
+      zpos *= -1;
+    }
+    if(isStereo){ 
+      xpos = 0.5*topFrameBotWidth - (sideFrameRWidth+bl1)*cos(detTilt) -
+        sin(fabs(detTilt-fabs(thet)))*(siFrSuppBoxYPos[i]+dz*(1/cos(thet)- cos(detTilt))+bl1*sin(detTilt));
+      xpos =-xpos;
+      zpos = topFrameEndZ - topFrame2RHeight -
+        0.5*sin(detTilt)*(topFrameBotWidth - topFrame2Width) - siFrSuppBoxYPos[i]-sin(detTilt)*sideFrameRWidth;
+    }
+    //position it;
+    doPos(ctxt, siFrSuppBox, mother, isStereo, rPos, posCorrectionPhi,xpos,ypos,zpos,waferRot);
+  }
+
+  //The Hybrid
+  name    = idName + "Hybrid";
+  double dx = 0.5 * hybridWidth;
+  double dy = 0.5 * hybridThick;
+  dz        = 0.5 * hybridHeight;
+  solid = Box(dx, dy, dz);
+  ns.addSolidNS(name, solid);
+  str << "Solid:\t" << solid.name() 
+      << " Box made of " << hybridMat << " of dimensions "
+      << dx << ", " << dy << ", " << dz;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Volume hybrid(name, solid, ns.material(hybridMat));
+  ns.addVolumeNS(hybrid);
+
+               ypos = hybridZ;
+  zpos = 0.5 * (-waferPosition + fullHeight + hybridHeight)+pitchHeight;
+  if (isRing6)	zpos *=-1;
+  //position it
+  doPos(ctxt, hybrid, mother, isStereo, rPos, posCorrectionPhi, 0, ypos, zpos, "NULL");
+
+  // Wafer
+  name    = idName + tag +"Wafer";
+  bl1     = 0.5 * dlBottom;
+  bl2     = 0.5 * dlTop;
+  h1      = 0.5 * waferThick;
+  dz      = 0.5 * fullHeight;
+  solid = Trap(dz, 0, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+  ns.addSolidNS(name,solid);
+  str << "Solid:\t" << solid.name()
+			<< " Trap made of " << waferMat << " of dimensions "
+			<< dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
+			<< bl1 << ", 0, " << h1 << ", " << bl2 << ", "
+			<< bl2 << ", 0";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Volume wafer(name, solid, ns.material(waferMat));
+  
+  ypos = activeZ;
+  zpos =-0.5 * waferPosition;// former and incorrect topFrameHeight;
+  if (isRing6) zpos *= -1;
+  
+  doPos(ctxt, wafer, mother, isStereo, rPos, posCorrectionPhi,0,ypos,zpos,waferRot);
+  
+  // Active
+  name    = idName + tag +"Active";
+  bl1    -= sideWidthBottom;
+  bl2    -= sideWidthTop;
+  dz      = 0.5 * (waferThick-backplaneThick); // inactive backplane
+  h1      = 0.5 * activeHeight;
+  if (isRing6) { //switch bl1 <->bl2
+    tmp = bl2;	bl2 =bl1;	bl1 = tmp;
+  }
+  solid = Trap(dz, 0, 0, h1, bl2, bl1, 0, h1, bl2, bl1, 0);
+  ns.addSolidNS(name,solid);
+  str << "Solid:\t" << solid.name() 
+      << " Trap made of " << activeMat << " of dimensions "
+      << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
+      << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
+      << bl1 << ", 0";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Volume active(name, solid, ns.material(activeMat));
+  ns.addVolumeNS(active);
+  doPos(ctxt, active, wafer, 1, -0.5 * backplaneThick,0,0, activeRot); // from the definition of the wafer local axes and doPos() routine
+
+  //inactive part in rings > 3
+  if(ringNo > 3){
+    inactivePos -= fullHeight-activeHeight; //inactivePos is measured from the beginning of the _wafer_
+    name    = idName + tag +"Inactive";
+    bl1     = 0.5*dlBottom-sideWidthBottom
+      + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
+      *(activeHeight-inactivePos-inactiveDy);
+    bl2    =  0.5*dlBottom-sideWidthBottom
+      + ((0.5*dlTop-sideWidthTop-0.5*dlBottom+sideWidthBottom)/activeHeight)
+      *(activeHeight-inactivePos+inactiveDy);
+    dz      = 0.5 * (waferThick-backplaneThick); // inactive backplane
+    h1      = inactiveDy;
+    if (isRing6) { //switch bl1 <->bl2
+      tmp = bl2;	bl2 =bl1;	bl1 = tmp;
+    }
+    solid = Trap(dz, 0, 0, h1, bl2, bl1, 0, h1, bl2, bl1, 0);
+    ns.addSolidNS(name,solid);
+    str << "Solid:\t" << solid.name() 
+        << " Trap made of " << inactiveMat << " of dimensions "
+        << dz << ", 0, 0, " << h1 << ", " << bl2 << ", "
+        << bl1 << ", 0, " << h1 << ", " << bl2 << ", "
+        << bl1 << ", 0";  
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    Volume inactive(name, solid, ns.material(inactiveMat));
+    ns.addVolumeNS(inactive);
+    ypos = inactivePos - 0.5*activeHeight;
+    doPos(ctxt, inactive, active, 1, ypos, 0, 0, "NULL"); // from the definition of the wafer local axes and doPos() routine
+  }
+  //Pitch Adapter
+  name    = idName + "PA";
+  if (!isStereo) {
+    dx      = 0.5 * pitchWidth;
+    dy      = 0.5 * pitchThick;
+    dz      = 0.5 * pitchHeight;
+    solid   = Box(dx, dy, dz);
+    ns.addSolidNS(name,solid);
+    str << "Solid:\t" << solid.name() 
+        << " Box made of " << pitchMat <<" of dimensions "
+        << dx << ", " << dy << ", " << dz;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  } else {
+    dz      = 0.5 * pitchWidth;    
+    h1      = 0.5 * pitchThick;
+    bl1     = 0.5 * pitchHeight + 0.5 * dz * sin(detTilt);
+    bl2     = 0.5 * pitchHeight - 0.5 * dz * sin(detTilt);
+    thet = atan((bl1-bl2)/(2.*dz));
+    solid   = Trap(dz, thet, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+    ns.addSolidNS(name,solid);
+    str << "Solid:\t" << solid.name()
+        << " Trap made of " <<  pitchMat
+        << " of dimensions " << dz << ", " << thet/CLHEP::deg
+        << ", 0, " << h1 << ", " << bl1 << ", " << bl1
+        << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+        << ", 0";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  }
+  xpos = 0;
+  ypos = pitchZ;
+  zpos = 0.5 * (-waferPosition + fullHeight + pitchHeight);
+  if (isRing6) zpos *= -1;
+  if(isStereo)    xpos    = 0.5 * fullHeight * sin(detTilt);
+  
+  Volume pa(name, solid, ns.material(pitchMat));
+  if(isStereo) doPos(ctxt, pa, mother, isStereo, rPos, posCorrectionPhi, xpos, ypos,zpos, pitchRot);
+  else         doPos(ctxt, pa, mother, isStereo, rPos, posCorrectionPhi, xpos, ypos,zpos, "NULL");
+
+  //Top of the frame
+  name = idName + "TopFrame";
+  h1 = 0.5 * topFrameThick;
+  dz = 0.5 * topFrameHeight;
+  bl1 = 0.5 * topFrameBotWidth;
+  bl2 = 0.5 * topFrameTopWidth;
+  if (isRing6) {    // ring 6 faces the other way!
+    bl1 = 0.5 * topFrameTopWidth;
+    bl2 = 0.5 * topFrameBotWidth;
+  }
+  
+  solid = Trap(dz, 0, 0, h1, bl1, bl1,0, h1, bl2, bl2, 0);
+  ns.addSolid(name,solid);
+  str << "Solid:\t" << solid.name() 
+      << " Trap made of " << topFrameMat << " of dimensions " 
+      << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "  
+      << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+      << ", 0";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  Volume topFrame(name, solid, ns.material(topFrameMat));
+  ns.addVolumeNS(topFrame);
+  
+  if(isStereo){ 
+    name = idName + "TopFrame2";
+    //additional object to build the not trapzoid geometry of the stereo topframes
+    dz      = 0.5 * topFrame2Width;    
+    h1      = 0.5 * topFrameThick;
+    bl1     = 0.5 * topFrame2LHeight;
+    bl2     = 0.5 * topFrame2RHeight;
+    thet    = atan((bl1-bl2)/(2.*dz));
+	
+    solid   = Trap(dz, thet, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+    ns.addSolid(name,solid);
+    str << "Solid:\t" << solid.name()
+        << " Trap made of " << topFrameMat << " of dimensions "
+        << dz << ", " << thet/CLHEP::deg << ", 0, " << h1 
+        << ", " << bl1 << ", " << bl1 << ", 0, " << h1 
+        << ", " << bl2 << ", " << bl2 << ", 0";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  }
+  
+  // Position the topframe
+  ypos = topFrameZ;
+  zpos = 0.5 * (-waferPosition + fullHeight - topFrameHeight)+ pitchHeight + hybridHeight;
+  if(isRing6){
+    zpos *=-1;
+  }
+
+  doPos(ctxt, topFrame, mother, isStereo, rPos, posCorrectionPhi, 0,ypos,zpos,"NULL");
+  if ( isStereo )  {
+    //create
+    Volume topFrame2(name, solid, ns.material(topFrameMat));
+    zpos -= 0.5*(topFrameHeight + 0.5*(topFrame2LHeight+topFrame2RHeight));
+    doPos(ctxt, topFrame2, mother, isStereo, rPos, posCorrectionPhi, 0,ypos,zpos,pitchRot);
+  }
+  
+  //Si - Reencorcement
+  matter = ns.material(siReenforceMat);
+  for (int i= 0; i < (int)(siReenforceWidth.size());i++){
+    name    = idName + "SiReenforce" + std::to_string(i);
+    h1 = 0.5 * siReenforceThick;
+    dz = 0.5 * siReenforceHeight[i];
+    bl1 = bl2 = 0.5 * siReenforceWidth[i];    
+    solid = Trap(dz, 0, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+    str << "Solid:\t" << solid.name() 
+        << " Trap made of " << matter.name() << " of dimensions "
+        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
+        << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+        << ", 0";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    Volume siReenforce(name, solid, matter);
+    ns.addVolumeNS(siReenforce);
+    //translate
+    xpos =0 ;
+    ypos =  sideFrameZ;
+    zpos = topFrameEndZ -dz -siReenforceYPos[i];
+	
+    if (isRing6)  zpos *= -1;
+    if(isStereo){ 
+      xpos = (-siReenforceYPos[i]+0.5*fullHeight)*sin(detTilt);
+      //  thet = detTilt;
+      //  if(topFrame2RHeight > topFrame2LHeight) thet *= -1;
+      //    zpos -= topFrame2RHeight + sin(thet)*(sideFrameRWidth + 0.5*dlTop);
+      zpos -= topFrame2RHeight + sin (fabs(detTilt))* 0.5*topFrame2Width;
+    }
+    doPos(ctxt,siReenforce, mother, isStereo, rPos, posCorrectionPhi,xpos,ypos,zpos,waferRot);
+  }
+
+  //Bridge 
+  if (bridgeMat != "None") {
+    name    = idName + "Bridge";
+    bl2     = 0.5*bridgeSep + bridgeWidth;
+    bl1     = bl2 - bridgeHeight * dxdif / dzdif;
+    h1      = 0.5 * bridgeThick;
+    dz      = 0.5 * bridgeHeight;
+    solid = Trap(dz, 0, 0, h1, bl1, bl1, 0, h1, bl2, bl2, 0);
+    str << "Solid:\t" << solid.name()
+        << " Trap made of " << bridgeMat << " of dimensions "
+        << dz << ", 0, 0, " << h1 << ", " << bl1 << ", "
+        << bl1 << ", 0, " << h1 << ", " << bl2 << ", " << bl2
+        << ", 0";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    Volume bridge(name, solid, ns.material(bridgeMat));
+    ns.addVolumeNS(bridge);
+
+    name    = idName + "BridgeGap";
+    bl1     = 0.5*bridgeSep;
+    solid = Box(bl1, h1, dz);
+    str << "Solid:\t" << solid.name() 
+        << " Box made of " << genMat << " of dimensions "
+        << bl1 << ", " << h1 << ", " << dz;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+    Volume bridgeGap(name, solid, ns.material(genMat));
+    ns.addVolumeNS(bridgeGap);
+    /* PlacedVolume pv = */ bridge.placeVolume(bridgeGap);
+    str << "Solid: " << bridgeGap.name() 
+        << " number 1 positioned in " << bridge.name()
+        << " at (0,0,0) with no rotation";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  }
+  str << "<<== End of DDTECModuleAlgo construction ...";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECModuleAlgo",str);
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTECModuleAlgo,algorithm)
diff --git a/DDCMS/src/plugins/DDTECOptoHybAlgo.cpp b/DDCMS/src/plugins/DDTECOptoHybAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..76e99613f77298b04cd0381d882898adc309a4af
--- /dev/null
+++ b/DDCMS/src/plugins/DDTECOptoHybAlgo.cpp
@@ -0,0 +1,100 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt,e,true);
+  AlgoArguments  args(ctxt, e);
+  int            startCopyNo = args.value<int>("StartCopyNo");
+  double         rpos        = args.value<double>("Rpos");
+  double         zpos        = args.value<double>("Zpos");
+  double         optoHeight  = args.value<double>("OptoHeight");
+  double         optoWidth   = args.value<double>("OptoWidth");
+  vector<double> angles      = args.value<vector<double> >("Angles");
+  Volume         child       = ns.volume(args.value<string>("ChildName"));
+  Volume         mother      = ns.volume(args.parentName());
+
+  str << "Parent " << mother.name() << " Child " << child.name() << " NameSpace " << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECOptoHybAlgo",str);
+
+  str << "Height of the Hybrid "
+      << optoHeight << " and Width " << optoWidth
+      <<"Rpos " << rpos << " Zpos " << zpos 
+      << " StartCopyNo " << startCopyNo << " Number " 
+      << angles.size();
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECOptoHybAlgo",str);
+
+  // given r positions are for the lower left corner
+  rpos += optoHeight/2;
+  int    copyNo = startCopyNo;
+  for (double angle : angles) {
+    double phix = -angle;
+    // given phi positions are for the lower left corner
+    phix += asin(optoWidth/2/rpos);
+    double xpos = rpos * cos(phix);
+    double ypos = rpos * sin(phix);
+    Position tran(xpos, ypos, zpos);
+
+    Rotation3D rotation;
+    double phiy = phix + 90.*CLHEP::deg;
+    double phideg = phix/CLHEP::deg;
+    if (phideg != 0) {
+      string rotstr= ns.ns_name(child.name()) + std::to_string(phideg*1000.);
+      auto irot = ctxt.rotations.find(ns.prepend(rotstr));
+      if ( irot != ctxt.rotations.end() )   {
+        rotation = ns.rotation(ns.prepend(rotstr));
+      }
+      else  {
+        double theta = 90.*CLHEP::deg;
+        str << "test: Creating a new "
+            << "rotation: " << rotstr << "\t90., " 
+            << phix/CLHEP::deg << ", 90.," << phiy/CLHEP::deg
+            << ", 0, 0";
+        printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECOptoHybAlgo",str);
+        rotation = make_rotation3D(theta, phix, theta, phiy, 0., 0.);
+      }
+    }
+    mother.placeVolume(child, Transform3D(rotation,tran));
+    str << "test " << child.name() << " number " 
+        << copyNo << " positioned in " << mother.name() << " at "
+        << tran  << " with " << rotation;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECOptoHybAlgo",str);
+    copyNo++;
+  }
+  str << "<<== End of DDTECOptoHybAlgo construction ...";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECOptoHybAlgo",str);
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTECOptoHybAlgo,algorithm)
diff --git a/DDCMS/src/plugins/DDTECPhiAlgo.cpp b/DDCMS/src/plugins/DDTECPhiAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..85c04c917579291f0dc987062b92d310bd88e44e
--- /dev/null
+++ b/DDCMS/src/plugins/DDTECPhiAlgo.cpp
@@ -0,0 +1,81 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream  str;
+  Namespace     ns(ctxt, e, true);
+  AlgoArguments args(ctxt, e);
+  Volume        mother      = ns.volume(args.parentName());
+  Volume        child       = ns.volume(args.childName());
+  double        startAngle  = args.value<double>("StartAngle");  //Start angle
+  double        incrAngle   = args.value<double>("IncrAngle");   //Increment in angle
+  double        zIn         = args.value<double>("ZIn");         //z position for the even ones
+  double        zOut        = args.value<double>("ZOut");        //z position for the odd  ones
+  int           number      = args.value<double>("Number");      //Number of copies
+  int           startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1; //Start copy number
+  int           incrCopyNo  = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;  //Increment in copy number
+
+  str << "debug: Parameters for "
+      << "positioning--" << "\tStartAngle " 
+      << startAngle/CLHEP::deg << "\tIncrAngle " 
+      << incrAngle/CLHEP::deg << "\tZ in/out " << zIn << ", " 
+      << zOut 	      << "\tCopy Numbers " << number 
+      << " Start/Increment " << startCopyNo << ", " 
+      << incrCopyNo;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECPhiAlgo",str);
+  str << "debug: Parent " << mother.name() 
+      << "\tChild " << child.name() << " NameSpace " 
+      << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECPhiAlgo",str);
+
+  if (number > 0) {
+    double theta  = 90.*CLHEP::deg;
+    int    copyNo = startCopyNo;
+    for (int i=0; i<number; i++) {
+      double phix = startAngle + i*incrAngle;
+      double phiy = phix + 90.*CLHEP::deg;
+      Rotation3D rotation = make_rotation3D(theta, phix, theta, phiy, 0, 0);
+      Position   tran(0., 0., (i%2 == 0) ? zIn : zOut);
+      /* PlacedVolume pv = */ mother.placeVolume(child,Transform3D(rotation,tran));
+      str << "test: " << child.name() <<" number "
+          << copyNo << " positioned in " << mother.name() <<" at "
+          << tran << " with " << rotation;
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECPhiAlgo",str);
+      copyNo += incrCopyNo;
+    }
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTECPhiAlgo,algorithm)
diff --git a/DDCMS/src/plugins/DDTECPhiAltAlgo.cpp b/DDCMS/src/plugins/DDTECPhiAltAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b14a52d28a1861172b612a463dd913201bcec2e7
--- /dev/null
+++ b/DDCMS/src/plugins/DDTECPhiAltAlgo.cpp
@@ -0,0 +1,82 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream  str;
+  Namespace     ns(ctxt, e, true);
+  AlgoArguments args(ctxt, e);
+  Volume        mother      = ns.volume(args.parentName());
+  Volume        child       = ns.volume(args.childName());
+  double        startAngle  = args.value<double>("StartAngle");  //Start angle
+  double        incrAngle   = args.value<double>("IncrAngle");   //Increment in angle
+  double        zIn         = args.value<double>("ZIn");         //z position for the even ones
+  double        zOut        = args.value<double>("ZOut");        //z position for the odd  ones
+  int           number      = args.value<double>("Number");      //Number of copies
+  int           startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1; //Start copy number
+  int           incrCopyNo  = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;  //Increment in copy number
+
+  str << "debug: Parameters for "
+      << "positioning--" << "\tStartAngle " 
+      << startAngle/CLHEP::deg << "\tIncrAngle " 
+      << incrAngle/CLHEP::deg << "\tZ in/out " << zIn << ", " 
+      << zOut 	      << "\tCopy Numbers " << number 
+      << " Start/Increment " << startCopyNo << ", " 
+      << incrCopyNo;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECPhiAltAlgo",str);
+  str << "debug: Parent " << mother.name() 
+      << "\tChild " << child.name() << " NameSpace " 
+      << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECPhiAltAlgo",str);
+
+  if (number > 0) {
+    double theta  = 90.*CLHEP::deg;
+    int    copyNo = startCopyNo;
+    for (int i=0; i<number; i++) {
+      double phiz = startAngle + i*incrAngle;
+      double phix = phiz + 90.*CLHEP::deg;  
+      Rotation3D rotation = make_rotation3D(theta, phix, 0e0, 0e0, theta, phiz);
+      Position   tran(0., 0., (i%2 == 0) ? zIn : zOut);
+      /* PlacedVolume pv = */ mother.placeVolume(child,Transform3D(rotation,tran));
+      str << "test: " << child.name() <<" number "
+          << copyNo << " positioned in " << mother.name() <<" at "
+          << tran << " with " << rotation;
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTECPhiAltAlgo",str);
+      copyNo += incrCopyNo;
+    }
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTECPhiAltAlgo,algorithm)
+
diff --git a/DDCMS/src/plugins/DDTIBLayerAlgo.cpp b/DDCMS/src/plugins/DDTIBLayerAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ccc991dfffe5e030ecc555049fd5ee39b3d051e3
--- /dev/null
+++ b/DDCMS/src/plugins/DDTIBLayerAlgo.cpp
@@ -0,0 +1,46 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream  str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  //Volume         mother     = ns.volume(args.parentName());
+
+  str << "Not implemented. To be done.... ";// << mother.name();
+  printout(WARNING,"DDTIBLayerAlgo",str);
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTIBLayerAlgo,algorithm)
diff --git a/DDCMS/src/plugins/DDTIDModuleAlgo.cpp b/DDCMS/src/plugins/DDTIDModuleAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a820afd62aeb2f2b4615e1236b45bbbb719a15b7
--- /dev/null
+++ b/DDCMS/src/plugins/DDTIDModuleAlgo.cpp
@@ -0,0 +1,46 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  //Volume         mother     = ns.volume(args.parentName());
+  
+  str << "Not implemented. To be done.... ";// << mother.name();
+  printout(WARNING,"DDTIDModuleAlgo",str);
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTIDModuleAlgo,algorithm)
diff --git a/DDCMS/src/plugins/DDTIDRingAlgo.cpp b/DDCMS/src/plugins/DDTIDRingAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3437688a8d76b965f898afc49fc592b57c8818a3
--- /dev/null
+++ b/DDCMS/src/plugins/DDTIDRingAlgo.cpp
@@ -0,0 +1,125 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream  str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  Volume         mother     = ns.volume(args.parentName());
+  vector<string> moduleName = args.value<vector<string> >("ModuleName"); //Name of the module
+  string         iccName    = args.value<string>("ICCName");             //Name of the ICC
+  int            number     = args.value<int>("Number");                 //Number of copies
+  double         startAngle = args.value<double>("StartAngle");          //Phi offset
+  double         rModule    = args.value<double>("ModuleR");             //Location of module in R 
+  vector<double> zModule    = args.value<vector<double> >("ModuleZ");     //                   in Z
+  double         rICC       = args.value<double>("ICCR");                //Location of ICC    in R 
+  double         sICC       = args.value<double>("ICCShift");            //Shift of ICC       per to R
+  vector<double> zICC       = args.value<vector<double> >("ICCZ");        //                   in Z
+
+  str << "Parent " << mother.name() 
+      << "\tModule " << moduleName[0] << ", "
+      << moduleName[1] << "\tICC " << iccName 
+      << "\tNameSpace " << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTIDRingAlgo",str);
+
+  str << "Parameters for positioning--"
+      << " StartAngle " << startAngle/CLHEP::deg
+      << " Copy Numbers " << number << " Modules at R " 
+      << rModule << " Z " << zModule[0] << ", " << zModule[1] 
+      << " ICCs at R " << rICC << " Z " << zICC[0] << ", " 
+      << zICC[1]; 
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTIDRingAlgo",str);
+
+  double theta = 90.*CLHEP::deg;
+  double phiy  = 0.*CLHEP::deg;
+  double dphi  = CLHEP::twopi/number;
+
+  //Loop over modules
+  Volume icc  = ns.volume(iccName);
+  Volume mod0 = ns.volume(moduleName[0]);
+  Volume mod1 = ns.volume(moduleName[1]);
+  for (int i=0; i<number; i++) {
+    //First the module
+    double phiz = startAngle + i*dphi;
+    double xpos = rModule*cos(phiz);
+    double ypos = rModule*sin(phiz);
+    double zpos, thetay, phix;
+    Volume module;
+    if (i%2 == 0) {
+      phix   = phiz + 90.*CLHEP::deg;
+      thetay = 0*CLHEP::deg;
+      zpos   = zModule[0];
+      module = mod0;
+    } else {
+      phix   = phiz - 90.*CLHEP::deg;
+      thetay = 180*CLHEP::deg;
+      zpos   = zModule[1];
+      module = mod1;
+    }
+    
+    // stereo face inside toward structure, rphi face outside
+    phix   = phix   - 180.*CLHEP::deg;
+    thetay = thetay + 180.*CLHEP::deg;
+    //
+    Position    trmod(xpos, ypos, zpos);
+    Rotation3D  rotation = make_rotation3D(theta, phix, thetay, phiy, theta, phiz);
+    // int copyNr = i+1;
+    /* PlacedVolume pv = */ mother.placeVolume(module, Transform3D(rotation,trmod));
+    str << module.name() << " number "
+        << i+1 << " positioned in " << mother.name() << " at "
+        << trmod << " with " << rotation;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTIDRingAlgo",str);
+
+    //Now the ICC
+    if (i%2 == 0 ) {
+      zpos = zICC[0];
+      xpos = rICC*cos(phiz) + sICC*sin(phiz);
+      ypos = rICC*sin(phiz) - sICC*cos(phiz);
+    } else {
+      zpos = zICC[1];
+      xpos = rICC*cos(phiz) - sICC*sin(phiz);
+      ypos = rICC*sin(phiz) + sICC*cos(phiz);
+    }
+    // int copyNr = i+1;
+    Position tricc(xpos, ypos, zpos);
+    /* PlacedVolume pv = */ mother.placeVolume(icc, Transform3D(rotation,tricc));
+    str << iccName << " number " 
+        << i+1 << " positioned in " << mother.name() << " at "
+        << tricc << " with " << rotation;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTIDRingAlgo",str);
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTIDRingAlgo___DISABLED,algorithm)
diff --git a/DDCMS/src/plugins/DDTOBRodAlgo.cpp b/DDCMS/src/plugins/DDTOBRodAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..94642942e79fe51a47ce224b10e9f484c0a05f7e
--- /dev/null
+++ b/DDCMS/src/plugins/DDTOBRodAlgo.cpp
@@ -0,0 +1,46 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  Volume         mother     = ns.volume(args.parentName());
+
+  str << "Not implemented. To be done.... " << mother.name();
+  printout(WARNING,"DDTOBRodAlgo",str);
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTOBRodAlgo,algorithm)
diff --git a/DDCMS/src/plugins/DDTrackerAngular.cpp b/DDCMS/src/plugins/DDTrackerAngular.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bf6e48c6151450ee78bf4c05dff96abd878e1a4b
--- /dev/null
+++ b/DDCMS/src/plugins/DDTrackerAngular.cpp
@@ -0,0 +1,116 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long  algorithm(Detector& /* description */,
+                       ParsingContext& ctxt,
+                       xml_h e,
+                       SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt,e,true);
+  AlgoArguments  args(ctxt, e);
+  // Header section of original DDTrackerAngular.h
+  int            n           = args.value<int>("N");
+  int            startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1;
+  int            incrCopyNo  = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;
+  double         rangeAngle  = args.value<double>("RangeAngle");      //Range in angle
+  double         startAngle  = args.value<double>("StartAngle");      //Start anle
+  double         radius      = args.value<double>("Radius");          //Radius
+  vector<double> center      = args.value<vector<double> >("Center"); //Phi values
+  double         delta;          //Increment in phi
+  Volume         mother      = ns.volume(args.parentName());
+  Volume         child       = ns.volume(args.value<string>("ChildName"));
+
+  // Code section of original DDTrackerAngular.cc
+  if (fabs(rangeAngle-360.0*CLHEP::deg)<0.001*CLHEP::deg) { 
+    delta    =   rangeAngle/double(n);
+  } else {
+    if (n > 1) {
+      delta    =   rangeAngle/double(n-1);
+    } else {
+      delta = 0.;
+    }
+  }  
+
+  str << "debug: Parameters for positioning:: n "
+      << n << " Start, Range, Delta " 
+      << startAngle/CLHEP::deg << " " 
+      << rangeAngle/CLHEP::deg << " " << delta/CLHEP::deg
+      << " Radius " << radius << " Centre " << center[0] 
+      << ", " << center[1] << ", "<<center[2];
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerAngular",str);
+
+  str << "debug: Parent " << mother.name() 
+      << "\tChild " << child.name() << " NameSpace "
+      << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerAngular",str);
+
+  double theta  = 90.*CLHEP::deg;
+  int    copy   = startCopyNo;
+  double phi    = startAngle;
+  for (int i=0; i<n; i++) {
+    double phix = phi;
+    double phiy = phix + 90.*CLHEP::deg;
+    double phideg = phix/CLHEP::deg;
+
+    Rotation3D rotation;
+    if (phideg != 0) {
+      string rotstr = ns.ns_name(child.name()) + std::to_string(phideg*10.);
+      auto irot = ctxt.rotations.find(ns.prepend(rotstr));
+      if ( irot != ctxt.rotations.end() )   {
+        rotation = ns.rotation(ns.prepend(rotstr));
+      }
+      else  {
+        str << "Creating a new "
+            << "rotation: " << rotstr << "\t90., " 
+            << phix/CLHEP::deg << ", 90.," 
+            << phiy/CLHEP::deg <<", 0, 0";
+        printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerAngular",str);
+        RotationZYX   rot;
+        rotation = make_rotation3D(theta, phix, theta, phiy, 0., 0.);
+      }
+    }
+	
+    double xpos = radius*cos(phi) + center[0];
+    double ypos = radius*sin(phi) + center[1];
+    double zpos = center[2];
+    Position tran(xpos, ypos, zpos);
+    mother.placeVolume(child, Transform3D(rotation,tran));
+    str << "test " << child.name() << " number " 
+        << copy << " positioned in " << mother.name() << " at "
+        << tran  << " with " << rotation;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerAngular",str);
+    copy += incrCopyNo;
+    phi  += delta;
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTrackerAngular,algorithm)
diff --git a/DDCMS/src/plugins/DDTrackerLinear.cpp b/DDCMS/src/plugins/DDTrackerLinear.cpp
index 43c75df7099ab6fdac9364511acb64840cf061f2..92b5cef54d4a18884393c3fcaf4a54961c7b3185 100644
--- a/DDCMS/src/plugins/DDTrackerLinear.cpp
+++ b/DDCMS/src/plugins/DDTrackerLinear.cpp
@@ -28,70 +28,55 @@ using namespace dd4hep;
 using namespace dd4hep::detail;
 using namespace dd4hep::cms;
 
-static Ref_t create_element(Detector& /* description */,
-                            ParsingContext& ctxt,
-                            xml_h e,
-                            SensitiveDetector& /* sens */)
+static long create_element(Detector& /* description */,
+                           ParsingContext& ctxt,
+                           xml_h e,
+                           SensitiveDetector& /* sens */)
 {
-  stringstream str;
-  Namespace     ns(ctxt);
-  AlgoArguments args(ctxt, e);
-  xml_det_t      x_det   = e;
-  string         name    = x_det.nameStr();
-  DetElement     det    (name,x_det.id());
-  Assembly       assembly(name);
-  string         parentName = args.parentName();
-  int            startcn    = 1, incrcn = 1;
-  int            number     = args.value<int>("Number");
-  double         theta      = args.value<double>("Theta");
-  double         phi        = args.value<double>("Phi");
-  double         offset     = args.value<double>("Offset");
-  double         delta      = args.value<double>("Delta");
-  vector<double> centre     = args.value<vector<double> >("Center");
-  string         rotMat     = args.value<string>("Rotation");
-  
-  if ( args.find("StartCopyNo") ) {
-    startcn = size_t(args.value<double>("StartCopyNo"));
-  }
-  if ( args.find("IncrCopyNo") ) {
-    incrcn = int(args.value<double>("IncrCopyNo"));
-  }
-  printout(INFO,"DDTrackerLinear","+++ Executing Algorithm:%-24s rParent:%s",
-           name.c_str(), parentName.c_str());
+  stringstream   str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  int            startcn = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1;
+  int            incrcn  = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;
+  int            number  = args.value<int>("Number");
+  double         theta   = args.value<double>("Theta");
+  double         phi     = args.value<double>("Phi");
+  double         offset  = args.value<double>("Offset");
+  double         delta   = args.value<double>("Delta");
+  vector<double> centre  = args.value<vector<double> >("Center");
+  string         rotMat  = args.value<string>("Rotation");
+  Volume         mother  = ns.volume(args.parentName());
+  Volume         child   = ns.volume(args.value<string>("ChildName"));
 
-  string childName  = args.value<string>("ChildName");
-  str << "DDTrackerLinear debug: Parent " << parentName 
-      << "\tChild " << childName << " NameSpace " 
+  printout(INFO,"DDTrackerLinear","+++ Executing Algorithm. rParent:%s",mother.name());
+  str << "debug: Parent " << mother.name() 
+      << "\tChild " << child.name() << " NameSpace " 
       << ns.name << "\tNumber " << number 
       << "\tAxis (theta/phi) " << theta/dd4hep::deg << ", "
       << phi/dd4hep::deg << "\t(Offset/Delta) " << offset 
       << ", "  << delta << "\tCentre " << centre[0] << ", "
       << centre[1] << ", " << centre[2] << "\tRotation "
       << rotMat;
-  printout(INFO,"DDTrackerLinear",str.str().c_str());
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerLinear",str);
 
-  Volume   mother = ctxt.volume(parentName);
-  Volume   child  = ctxt.volume(childName);
   Position direction(sin(theta)*cos(phi),sin(theta)*sin(phi),cos(theta));
   Position base(centre[0],centre[1],centre[2]);
   RotationZYX   rot;
   if ( !rotMat.empty() ) {
-    rot = ctxt.rotation(rotMat);
+    rot = ns.rotation(rotMat);
   }
   for (int i=0, ci=startcn; i<number; i++, ci += incrcn) {
     Position tran = base + (offset + double(i)*delta)*direction;
     // Copy number ???
-    /* PlacedVolume pv = */
-    rotMat.empty()
-      ? assembly.placeVolume(child,Transform3D(rot,tran))
-      : assembly.placeVolume(child,tran);
-    str.str("");
+    /* PlacedVolume pv = */ rotMat.empty()
+      ? mother.placeVolume(child,Transform3D(rot,tran))
+      : mother.placeVolume(child,tran);
     str << child.name() << " number "
         << ci << " positioned in " << mother.name() << " at "
         << tran << " with " << rot;
-    printout(INFO,"DDTrackerLinear",str.str().c_str());
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerLinear",str);
   }
-  return det;  
+  return 1;
 }
 
 // first argument is the type from the xml file
diff --git a/DDCMS/src/plugins/DDTrackerPhiAlgo.cpp b/DDCMS/src/plugins/DDTrackerPhiAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c6da02ee7e193486c54cf7a12c8ecb2717df92f5
--- /dev/null
+++ b/DDCMS/src/plugins/DDTrackerPhiAlgo.cpp
@@ -0,0 +1,93 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  Volume         mother      = ns.volume(args.parentName());
+  Volume         child       = ns.volume(args.childName());
+  int            startcn     = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1;
+  int            incrcn      = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;
+  vector<double> phi         = args.value<vector<double> >("Phi");         // Phi values
+  vector<double> zpos        = args.value<vector<double> >("ZPos");        // Z positions
+  int            numcopies   = args.find("NumCopies") ? args.value<int>("NumCopies") : int(phi.size());
+  double         radius      = args.value<double>("Radius");
+  double         tilt        = args.value<double>("Tilt");
+
+  if ( numcopies != int(phi.size()) )  {
+    str << "error: Parameter "
+        << "NumCopies does not agree with the size "
+        << "of the Phi vector. It was adjusted to "
+        << "be the size of the Phi vector and may "
+        << "lead to crashes or errors.";
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAlgo",str);
+  }
+
+  str << "debug: Parameters for position"
+                          << "ing:: " << " Radius " << radius << " Tilt " 
+                          << tilt/CLHEP::deg << " Copies " << phi.size() 
+                          << " at";
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAlgo",str);
+  for (int i=0; i<(int)(phi.size()); i++)  {
+    str << "\t[" << i << "] phi = " << phi[i]/CLHEP::deg 
+        << " z = " << zpos[i];
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAlgo",str);
+  }
+  str <<  "debug: Parent " << mother.name()
+      <<"\tChild " << child.name() << " NameSpace " << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAlgo",str);
+
+  double theta  = 90.*CLHEP::deg;
+  int ci = startcn;
+  for (int i  = 0; i < numcopies; ++i) {
+    double phix   = phi[i] + tilt;
+    double phiy   = phix + 90.*CLHEP::deg;
+    double phideg = phi[i]/CLHEP::deg;
+    double xpos   = radius*cos(phi[i]);
+    double ypos   = radius*sin(phi[i]);
+    Rotation3D rot = make_rotation3D(theta, phix, theta, phiy, 0., 0.);
+    Position   tran(xpos, ypos, zpos[i]);
+    /* PlacedVolume pv = */ mother.placeVolume(child,Transform3D(rot,tran));
+    str << "test: " << child.name() << " number "
+        << ci << " positioned in " << mother.name() << " at "
+        << tran  << " with " << rot;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAlgo",str);
+    ci = ci+incrcn;
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTrackerPhiAlgo,algorithm)
+
diff --git a/DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp b/DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b56945947ea769df4d2f087c412f060b163efef3
--- /dev/null
+++ b/DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp
@@ -0,0 +1,104 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream  str;
+  Namespace     ns(ctxt, e, true);
+  AlgoArguments args(ctxt, e);
+  Volume        mother      = ns.volume(args.parentName());
+  Volume        child       = ns.volume(args.childName());
+  double        tilt        = args.value<double>("Tilt");        //Tilt of the module
+  double        startAngle  = args.value<double>("StartAngle");  //offset in phi
+  double        rangeAngle  = args.value<double>("RangeAngle");  //Maximum range in phi
+  double        radiusIn    = args.value<double>("RadiusIn");    //Inner radius
+  double        radiusOut   = args.value<double>("RadiusOut");   //Outer radius
+  double        zpos        = args.value<double>("ZPosition");   //z position
+  int           number      = args.value<int>("Number");         //Number of copies
+  int           startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1; //Start copy number
+  int           incrCopyNo  = args.find("IncrCopyNo")  ? args.value<int>("IncrCopyNo")  : 1; //Increment in copy number
+
+  str << "Parameters for positioning-- Tilt " << tilt 
+      << "\tStartAngle " << startAngle/CLHEP::deg 
+      << "\tRangeAngle " << rangeAngle/CLHEP::deg 
+      << "\tRin " << radiusIn << "\tRout " << radiusOut 
+      << "\t ZPos " << zpos << "\tCopy Numbers " << number 
+      << " Start/Increment " << startCopyNo << ", " 
+      << incrCopyNo;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAltAlgo",str);
+  str << "Parent " << mother.name() << "\tChild " << child.name() << " NameSpace " << ns.name;
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAltAlgo",str);
+
+  if (number > 0) {
+    double theta  = 90.*CLHEP::deg;
+    double dphi;
+    if (number == 1 || fabs(rangeAngle-360.0*CLHEP::deg)<0.001*CLHEP::deg) 
+      dphi = rangeAngle/number;
+    else
+      dphi = rangeAngle/(number-1);
+    int copyNo = startCopyNo;
+
+    for (int i=0; i<number; i++) {
+      double phi  = startAngle + i*dphi;
+      double phix = phi - tilt + 90.*CLHEP::deg;
+      double phiy = phix + 90.*CLHEP::deg;
+      double phideg = phix/CLHEP::deg;
+  
+      Rotation3D rotation;
+      if (phideg != 0) {
+        rotation = make_rotation3D(theta, phix, theta, phiy, 0., 0.);
+      }
+	
+      double xpos, ypos;
+      if (i%2 == 0) {
+        xpos = radiusIn*cos(phi);
+        ypos = radiusIn*sin(phi);
+      } else {
+        xpos = radiusOut*cos(phi);
+        ypos = radiusOut*sin(phi);
+      }
+      Position tran(xpos, ypos, zpos);  
+      /* PlacedVolume pv = */ mother.placeVolume(child,Transform3D(rotation,tran));
+      str << "" << child.name() 
+          << " number " << copyNo << " positioned in " 
+          << mother.name() << " at " << tran << " with " 
+          << rotation;
+      printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerPhiAltAlgo",str);
+      copyNo += incrCopyNo;
+    }
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTrackerPhiAltAlgo,algorithm)
+
diff --git a/DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp b/DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..57faf42ec79d569221af8afedd7eb05a0c7003c2
--- /dev/null
+++ b/DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp
@@ -0,0 +1,78 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  int            startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1;
+  int            incrCopyNo  = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;
+  Volume         mother      = ns.volume(args.parentName());
+  Volume         child       = ns.volume(args.value<string>("ChildName"));
+  vector<double> xvec        = args.value<vector<double> >("XPositions");    // X positions
+  vector<double> yvec        = args.value<vector<double> >("YPositions");    // Y positions
+  vector<double> zvec        = args.value<vector<double> >("ZPositions");    // Z positions
+  vector<string> rotMat      = args.value<vector<string> >("Rotations");   // Names of rotation matrices
+
+  str << "debug: Parent " << mother.name() 
+      << "\tChild " << child.name() << " NameSpace " 
+      << ns.name << "\tCopyNo (Start/Increment) " 
+      << startCopyNo << ", " << incrCopyNo << "\tNumber " 
+      << xvec.size() << ", " << yvec.size() << ", " << zvec.size();
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerXYZPosAlgo",str);
+  for (int i = 0; i < (int)(zvec.size()); i++) {
+    str << "\t[" << i << "]\tX = " << xvec[i]
+        << "\t[" << i << "]\tY = " << yvec[i] 
+        << "\t[" << i << "]\tZ = " << zvec[i] 
+        << ", Rot.Matrix = " << rotMat[i];
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerXYZPosAlgo",str);
+  }
+
+  for (int i=0, copy = startCopyNo; i<(int)(zvec.size()); i++) {
+    Position tran(xvec[i], yvec[i], zvec[i]);
+    Rotation3D rot;
+    /* PlacedVolume pv = */ rotMat[i] != "NULL"
+      ? mother.placeVolume(child,Transform3D(ns.rotation(rotMat[i]),tran))
+      : mother.placeVolume(child,tran);
+    str << "test: " << child.name() 
+        <<" number " << copy << " positioned in " 
+        << mother.name() << " at " << tran << " with " << rot;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerXYZPosAlgo",str);
+    copy += incrCopyNo;
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTrackerXYZPosAlgo,algorithm)
+
diff --git a/DDCMS/src/plugins/DDTrackerZPosAlgo.cpp b/DDCMS/src/plugins/DDTrackerZPosAlgo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e375c43dd022991a39f3232a1374ae83880bee47
--- /dev/null
+++ b/DDCMS/src/plugins/DDTrackerZPosAlgo.cpp
@@ -0,0 +1,73 @@
+//==========================================================================
+//  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.
+//
+// Author     : M.Frank
+//
+//==========================================================================
+//
+// Specialized generic detector constructor
+// 
+//==========================================================================
+
+// Framework include files
+#include "DD4hep/DetFactoryHelper.h"
+#include "DD4hep/Printout.h"
+#include "DDCMS/DDCMSPlugins.h"
+
+// C/C++ include files
+#include <sstream>
+
+using namespace std;
+using namespace dd4hep;
+using namespace dd4hep::cms;
+
+static long algorithm(Detector& /* description */,
+                      ParsingContext& ctxt,
+                      xml_h e,
+                      SensitiveDetector& /* sens */)
+{
+  stringstream   str;
+  Namespace      ns(ctxt, e, true);
+  AlgoArguments  args(ctxt, e);
+  int            startCopyNo = args.find("StartCopyNo") ? args.value<int>("StartCopyNo") : 1;
+  int            incrCopyNo  = args.find("IncrCopyNo") ? args.value<int>("IncrCopyNo") : 1;
+  Volume         mother      = ns.volume(args.parentName());
+  Volume         child       = ns.volume(args.value<string>("ChildName"));
+  vector<double> zvec        = args.value<vector<double> >("ZPositions");    // Z positions
+  vector<string> rotMat      = args.value<vector<string> >("Rotations");   // Names of rotation matrices
+
+  str << "debug: Parent " << mother.name() 
+      << "\tChild " << child.name() << " NameSpace " 
+      << ns.name << "\tCopyNo (Start/Increment) " 
+      << startCopyNo << ", " << incrCopyNo << "\tNumber " << zvec.size();
+  printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerZPosAlgo",str);
+  for (int i = 0; i < (int)(zvec.size()); i++) {
+    str << "\t[" << i << "]\tZ = " << zvec[i]
+        << ", Rot.Matrix = " << rotMat[i];
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerZPosAlgo",str);
+  }
+
+  for (int i=0, copy = startCopyNo; i<(int)(zvec.size()); i++) {
+    Position tran(0, 0, zvec[i]);
+    Rotation3D rot;
+    /* PlacedVolume pv = */ rotMat[i] != "NULL"
+      ? mother.placeVolume(child,Transform3D(ns.rotation(rotMat[i]),tran))
+      : mother.placeVolume(child,tran);
+    str << "test: " << child.name() 
+        <<" number " << copy << " positioned in " 
+        << mother.name() << " at " << tran << " with " << rot;
+    printout(ctxt.debug_algorithms ? ALWAYS : DEBUG,"DDTrackerZPosAlgo",str);
+    copy += incrCopyNo;
+  }
+  return 1;
+}
+
+// first argument is the type from the xml file
+DECLARE_DDCMS_DETELEMENT(track_DDTrackerZPosAlgo,algorithm)
+
diff --git a/DDCore/include/DD4hep/Printout.h b/DDCore/include/DD4hep/Printout.h
index 6daa21d6b2092967e0c9ce22ec118022819c9624..2dd9afd8a8e0b63835baa8742ee2572c9fcf6c64 100644
--- a/DDCore/include/DD4hep/Printout.h
+++ b/DDCore/include/DD4hep/Printout.h
@@ -21,6 +21,7 @@
 #include <cstdarg>
 #include <map>
 #include <string>
+#include <sstream>
 #include <iostream>
 
 /// Forward declarations
@@ -57,6 +58,26 @@ namespace dd4hep {
    */
   std::string arguments(int argc, char** argv);
   
+  /// Calls the display action with a given severity level
+  /**
+   *  @arg severity   [int,read-only]      Display severity flag (see enum)
+   *  @arg src        [string,read-only]   Information source (component, etc.)
+   *  @arg str        [stringstream, RW]   string stream containing data to be printed.
+   *                                       Object is reset after use.
+   *  @return Status code indicating success or failure
+   */
+  int printout(PrintLevel severity, const char* src, std::stringstream& str);
+
+  /// Calls the display action with a given severity level
+  /**
+   *  @arg severity   [int,read-only]      Display severity flag (see enum)
+   *  @arg src        [string,read-only]   Information source (component, etc.)
+   *  @arg str        [stringstream, RW]   string stream containing data to be printed.
+   *                                       Object is reset after use.
+   *  @return Status code indicating success or failure
+   */
+  int printout(PrintLevel severity, const std::string& src, std::stringstream& str);
+
   /// Calls the display action with a given severity level
   /**
    *  @arg severity   [int,read-only]      Display severity flag (see enum)
diff --git a/DDCore/include/XML/XMLElements.h b/DDCore/include/XML/XMLElements.h
index e5d8ac848659bc6c748ce3d2ebeb3cdbdafe09c7..f7fa8b0847ae9e92b108f44e9d7e45f8f0f943e1 100644
--- a/DDCore/include/XML/XMLElements.h
+++ b/DDCore/include/XML/XMLElements.h
@@ -627,24 +627,25 @@ namespace dd4hep {
       typedef XmlDocument* DOC;
       DOC m_doc;
 
-      /// Constructor
-      Document(DOC d) : m_doc(d) {
-      }
+      /// Default Constructor
+      Document() : m_doc(0) {}
+      /// Initializing Constructor
+      Document(DOC d) : m_doc(d) {}
+      /// Copy constructor
+      Document(const Document& d) = default;
+      /// Assignment
+      Document& operator=(const Document& d) = default;
+      /// Destructor
+      ~Document() = default;
       /// Auto-conversion to DOM document
-      operator DOC() const {
-        return m_doc;
-      }
+      operator DOC() const       {        return m_doc;      }
       /// Accessot to DOM document behaviour using arrow operator
-      DOC operator->() const {
-        return m_doc;
-      }
+      DOC operator->() const     {        return m_doc;      }
       /// Accessot to DOM document behaviour
-      DOC ptr() const {
-        return m_doc;
-      }
+      DOC ptr() const            {        return m_doc;      }
+
       /// Access the ROOT eleemnt of the DOM document
       Handle_t root() const;
-
       /// Create DOM element
       Handle_t createElt(const XmlChar* tag) const;
       /// Clone a DOM element / sub-tree
@@ -668,11 +669,13 @@ namespace dd4hep {
     class DocumentHolder : public Document {
     public:
       /// Default Constructor
-      DocumentHolder() : Document(0) {
-      }
+      DocumentHolder() = default;
+      /// Default Constructor
+      DocumentHolder(const DocumentHolder& copy) = delete;
       /// Constructor
-      DocumentHolder(DOC d) : Document(d) {
-      }
+      DocumentHolder(DOC d) : Document(d) { }
+      /// Assignment operator
+      DocumentHolder& operator=(const DocumentHolder& copy) = delete;
       /// Assign new document. Old document is dropped.
       DocumentHolder& assign(DOC d);
       /// Standard destructor - releases the document
diff --git a/DDCore/src/Printout.cpp b/DDCore/src/Printout.cpp
index adb28c4c7e374b3541a6258e4b80264afcc3c9d8..0a00c5f12d110df9f551e29fc2135e57c3ad32fc 100644
--- a/DDCore/src/Printout.cpp
+++ b/DDCore/src/Printout.cpp
@@ -102,6 +102,40 @@ string dd4hep::arguments(int argc, char** argv)   {
   return str.str();
 }  
 
+/// Calls the display action with a given severity level
+/**
+ *  @arg severity   [int,read-only]      Display severity flag (see enum)
+ *  @arg src        [string,read-only]   Information source (component, etc.)
+ *  @arg str        [stringstream, RW]   string stream containing data to be printed.
+ *                                       Object is reset after use.
+ *  @return Status code indicating success or failure
+ */
+int dd4hep::printout(PrintLevel severity, const char* src, std::stringstream& str)   {
+  int ret = 1;
+  if (severity >= print_lvl) {
+    ret = printout(severity, src, str.str().c_str());
+  }
+  str.str("");
+  return ret;
+}
+
+/// Calls the display action with a given severity level
+/**
+ *  @arg severity   [int,read-only]      Display severity flag (see enum)
+ *  @arg src        [string,read-only]   Information source (component, etc.)
+ *  @arg str        [stringstream, RW]   string stream containing data to be printed.
+ *                                       Object is reset after use.
+ *  @return Status code indicating success or failure
+ */
+int dd4hep::printout(PrintLevel severity, const std::string& src, std::stringstream& str)   {
+  int ret = 1;
+  if (severity >= print_lvl) {
+    ret = printout(severity, src, str.str().c_str());
+  }
+  str.str("");
+  return ret;
+}
+
 /** Calls the display action
  *  \arg severity   [int,read-only]      Display severity flag
  *  \arg src        [string,read-only]   Information source (component, etc.)
diff --git a/examples/DDCMS/CMS-tracker.png b/examples/DDCMS/CMS-pixbar.png
similarity index 100%
rename from examples/DDCMS/CMS-tracker.png
rename to examples/DDCMS/CMS-pixbar.png
diff --git a/examples/DDCMS/CMS-tracker1.png b/examples/DDCMS/CMS-tracker1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3c3f2b10184d4649c910adbc1cd7f8d17ba8c2d
Binary files /dev/null and b/examples/DDCMS/CMS-tracker1.png differ
diff --git a/examples/DDCMS/data/cms_tracker.xml b/examples/DDCMS/data/cms_tracker.xml
index a48ea6be8461f7fbbbf3aa44c08390737804d168..29faa3fdd2205adb12fcdee6778e21804b3569be 100644
--- a/examples/DDCMS/data/cms_tracker.xml
+++ b/examples/DDCMS/data/cms_tracker.xml
@@ -1,10 +1,19 @@
 <?xml version="1.0"?>
 <DDDefinition>
   <debug>
+<!-- 
     <debug_shapes/>
     <debug_volumes/>
+    <debug_constants/>
+    <debug_rotations/>
+    <debug_materials/>
+    <debug_includes/>
+    <debug_namespaces/>
+    <debug_algorithms/>
     <debug_placements/>
+-->
   </debug>
+
   <ConstantsSection label="" eval="true">
     <Constant name="world_x" value="5*m"/>
     <Constant name="world_y" value="5*m"/>
@@ -13,6 +22,12 @@
     <Constant name="Air"     value="materials_Air"     type="string"/>
     <Constant name="Vacuum"  value="materials_Vacuum"  type="string"/>
   </ConstantsSection>
+  <ConstantsSection label="servicescylinderb.xml" eval="true">
+	<Constant name="zero" value="0.0*fm"/>
+  </ConstantsSection>
+  <ConstantsSection label="servicescylinderf.xml" eval="true">
+	<Constant name="zero" value="0.0*fm"/>
+  </ConstantsSection>
 
   <VisSection>
 <!--   Unused stuff:
@@ -68,15 +83,28 @@
 
   </VisSection>
 
+  <ConstantsSection label="pixfwd" eval="true">
+        <Constant name="AnchorZ" value="0.*mm"/>
+        <Constant name="ZPixelForward" value="325.*mm"/>
+  </ConstantsSection>
+  <ConstantsSection label="tracker.xml" eval="true">
+	<Constant name="BackPlaneDz" value="0.015*mm"/>
+  </ConstantsSection>
+
   <IncludeSection>
     <Include ref="materials.xml"/>
     <Include ref="trackermaterial.xml"/>
+    <Include ref="tibtidcommonmaterial.xml"/>
     <Include ref="pixfwdMaterials.xml"/>
-    <Include ref="pixbarmaterial.xml"/>
+
     <Include ref="vacuum.xml"/>
     <Include ref="cmsextent.xml"/>
     <Include ref="cms.xml"/>
-    <Include ref="pixbar.xml"/>
+
+<!--
+-->
+
+    <Include ref="pixbarmaterial.xml"/>
     <Include ref="pixbarladder.xml"/>
     <Include ref="pixbarladderfull.xml"/>
     <Include ref="pixbarladderhalf.xml"/>
@@ -84,6 +112,225 @@
     <Include ref="pixbarlayer0.xml"/>
     <Include ref="pixbarlayer1.xml"/>
     <Include ref="pixbarlayer2.xml"/>
+    <Include ref="pixbar.xml"/>
+
+<!--
+-->
+
+    <Include ref="tecmaterial.xml"/>
+
+    <Include ref="tecpetpar.xml"/>
+    <Include ref="tecpetalb.xml"/>
+    <Include ref="tecpetalf.xml"/>
+    <Include ref="tecpetal0.xml"/>
+    <Include ref="tecpetal0b.xml"/>
+    <Include ref="tecpetal0f.xml"/>
+    <Include ref="tecpetal3.xml"/>
+    <Include ref="tecpetal3b.xml"/>
+    <Include ref="tecpetal3f.xml"/>
+    <Include ref="tecpetal6b.xml"/>
+    <Include ref="tecpetal6f.xml"/>
+    <Include ref="tecpetal8b.xml"/>
+    <Include ref="tecpetal8f.xml"/>
+
+    <Include ref="tecmodpar.xml"/>
+    <Include ref="tecmodule0.xml"/>
+    <Include ref="tecmodule0s.xml"/>
+    <Include ref="tecmodule1.xml"/>
+    <Include ref="tecmodule1r.xml"/>
+    <Include ref="tecmodule1s.xml"/>
+    <Include ref="tecmodule2.xml"/>
+    <Include ref="tecmodule3.xml"/>
+    <Include ref="tecmodule4.xml"/>
+    <Include ref="tecmodule4r.xml"/>
+    <Include ref="tecmodule4s.xml"/>
+    <Include ref="tecmodule5.xml"/>
+    <Include ref="tecmodule6.xml"/>
+    <Include ref="tecmodule0r.xml"/>
+
+    <Include ref="tecring0.xml"/>
+    <Include ref="tecring0b.xml"/>
+    <Include ref="tecring0f.xml"/>
+    <Include ref="tecring1.xml"/>
+    <Include ref="tecring1b.xml"/>
+    <Include ref="tecring1f.xml"/>
+    <Include ref="tecring2.xml"/>
+    <Include ref="tecring2b.xml"/>
+    <Include ref="tecring2f.xml"/>
+    <Include ref="tecring3.xml"/>
+    <Include ref="tecring3b.xml"/>
+    <Include ref="tecring3f.xml"/>
+    <Include ref="tecring4.xml"/>
+    <Include ref="tecring4b.xml"/>
+    <Include ref="tecring4f.xml"/>
+    <Include ref="tecring5.xml"/>
+    <Include ref="tecring5b.xml"/>
+    <Include ref="tecring5f.xml"/>
+    <Include ref="tecring6.xml"/>
+    <Include ref="tecring6b.xml"/>
+    <Include ref="tecring6f.xml"/>
+
+    <Include ref="tecwheel.xml"/>
+    <Include ref="tecwheel6.xml"/>
+    <Include ref="tecwheela.xml"/>
+    <Include ref="tecwheelb.xml"/>
+    <Include ref="tecwheelc.xml"/>
+    <Include ref="tecwheeld.xml"/>
+
+    <Include ref="tecbackplate.xml"/>
+    <Include ref="tec.xml"/>
+    <Include ref="tecservices.xml"/>
+
+<!--
+-->
+    <Include ref="tibmaterial.xml"/>
+
+    <Include ref="tibmodpar.xml"/>
+    <Include ref="tibmodule0.xml"/>
+    <Include ref="tibmodule0a.xml"/>
+    <Include ref="tibmodule0b.xml"/>
+    <Include ref="tibmodule2.xml"/>
+
+    <Include ref="tiblayerpar.xml"/>
+    <Include ref="tiblayer0.xml"/>
+    <Include ref="tiblayer1.xml"/>
+    <Include ref="tiblayer2.xml"/>
+    <Include ref="tiblayer3.xml"/>
+
+    <Include ref="tibstringpar.xml"/>
+    <Include ref="tibstring0.xml"/>
+    <Include ref="tibstring0ll.xml"/>
+    <Include ref="tibstring0lr.xml"/>
+    <Include ref="tibstring0ul.xml"/>
+    <Include ref="tibstring0ur.xml"/>
+    <Include ref="tibstring1.xml"/>
+    <Include ref="tibstring1ll.xml"/>
+    <Include ref="tibstring1lr.xml"/>
+    <Include ref="tibstring1ul.xml"/>
+    <Include ref="tibstring1ur.xml"/>
+    <Include ref="tibstring2.xml"/>
+    <Include ref="tibstring2ll.xml"/>
+    <Include ref="tibstring2lr.xml"/>
+    <Include ref="tibstring2ul.xml"/>
+    <Include ref="tibstring2ur.xml"/>
+    <Include ref="tibstring3.xml"/>
+    <Include ref="tibstring3ll.xml"/>
+    <Include ref="tibstring3lr.xml"/>
+    <Include ref="tibstring3ul.xml"/>
+    <Include ref="tibstring3ur.xml"/>
+
+    <Include ref="tib.xml"/>
+
+<!--
+-->
+    <Include ref="tidmaterial.xml"/>
+    <Include ref="tidmodpar.xml"/>
+    <Include ref="tidringpar.xml"/>
+
+    <Include ref="tidb.xml"/>
+    <Include ref="tidf.xml"/>
+    <Include ref="tidmodule0.xml"/>
+    <Include ref="tidmodule0l.xml"/>
+    <Include ref="tidmodule0r.xml"/>
+    <Include ref="tidmodule1.xml"/>
+    <Include ref="tidmodule1l.xml"/>
+    <Include ref="tidmodule1r.xml"/>
+    <Include ref="tidmodule2.xml"/>
+    <Include ref="tidring0.xml"/>
+    <Include ref="tidring0b.xml"/>
+    <Include ref="tidring0f.xml"/>
+    <Include ref="tidring1.xml"/>
+    <Include ref="tidring1b.xml"/>
+    <Include ref="tidring1f.xml"/>
+    <Include ref="tidring2.xml"/>
+    <Include ref="tid.xml"/>
+
+    <Include ref="tibtidservices.xml"/>
+    <Include ref="tibtidservicesb.xml"/>
+    <Include ref="tibtidservicesf.xml"/>
+<!--
+-->
+
+    <Include ref="tobmaterial.xml"/>
+    <Include ref="tobmodpar.xml"/>
+
+    <Include ref="tobmodule0.xml"/>
+    <Include ref="tobmodule2.xml"/>
+    <Include ref="tobmodule4.xml"/>
+
+    <Include ref="tobrodpar.xml"/>
+
+    <Include ref="tobrod0.xml"/>
+    <Include ref="tobrod0c.xml"/>
+    <Include ref="tobrod0h.xml"/>
+    <Include ref="tobrod0l.xml"/>
+
+    <Include ref="tobrod1.xml"/>
+    <Include ref="tobrod1h.xml"/>
+    <Include ref="tobrod1l.xml"/>
+
+    <Include ref="tobrod2.xml"/>
+    <Include ref="tobrod2c.xml"/>
+    <Include ref="tobrod2h.xml"/>
+    <Include ref="tobrod2l.xml"/>
+
+    <Include ref="tobrod3.xml"/>
+    <Include ref="tobrod3h.xml"/>
+    <Include ref="tobrod3l.xml"/>
+
+    <Include ref="tobrod4.xml"/>
+    <Include ref="tobrod4c.xml"/>
+    <Include ref="tobrod4h.xml"/>
+    <Include ref="tobrod4l.xml"/>
+
+    <Include ref="tobrod5.xml"/>
+    <Include ref="tobrod5h.xml"/>
+    <Include ref="tobrod5l.xml"/>
+
+    <Include ref="tob.xml"/>
+
+
+<!--
+    <Include ref="pixfwdCommon.xml"/>
+    <Include ref="pixfwdPanelBase.xml"/>
+    <Include ref="pixfwdPanel.xml"/>
+    <Include ref="pixfwdDisk.xml"/>
+    <Include ref="pixfwdCylinder.xml"/>
+    <Include ref="pixfwdNipple.xml"/>
+
+    <Include ref="pixfwdPlaq.xml"/>
+    <Include ref="pixfwdPlaq1x2.xml"/>
+    <Include ref="pixfwdPlaq1x5.xml"/>
+    <Include ref="pixfwdPlaq2x3.xml"/>
+    <Include ref="pixfwdPlaq2x4.xml"/>
+    <Include ref="pixfwdPlaq2x5.xml"/>
+
+    <Include ref="pixfwd.xml"/>
+
+-->
+
+    <Include ref="trackertib.xml"/>
+    <Include ref="trackertid.xml"/>
+    <Include ref="trackertec.xml"/>
+    <Include ref="trackertob.xml"/>
+    <Include ref="trackerbulkhead.xml"/>
+    <Include ref="trackerother.xml"/>
+    <Include ref="trackerpixbar.xml"/>
+    <Include ref="tracker.xml"/>
 
   </IncludeSection>
+
+  <PosPartSection label="">
+<!--
+    <PosPart copyNumber="1">
+	<rParent name="world_volume"/>
+	<rChild name="tec:TEC"/>
+    </PosPart>
+-->
+    <PosPart copyNumber="2">
+	<rParent name="world_volume"/>
+	<rChild name="tracker:Tracker"/>
+   </PosPart>
+  </PosPartSection>
+
 </DDDefinition>
diff --git a/examples/DDCMS/data/pixfwd.xml b/examples/DDCMS/data/pixfwd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ac7603bdd00554ea6ec84d6f280d5785e01f5503
--- /dev/null
+++ b/examples/DDCMS/data/pixfwd.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         @modified Xingtao Huang to implement the simplified fpix service cylinder
+         
+         == Subsystem or component described by the file ==
+         
+         Forward pixels endcap (contains two disks inside a service cylinder).
+         
+         == Root volume and its reference frame ==
+         
+         Two root volumes are defined:
+         
+         PixelForwardZPlus  : +Z half of the detector
+         PixelForwardZMinus : -Z half of the detector
+         
+         X horizontal
+         Y vertical
+         Z along the beam line, pointing away from IP
+         
+         == Positioning ==
+         
+         Anchor point of this component is at the IP-side edge of the service cylider, on 
+         the axis of the detector (see annotated drawings).
+         The file defines [AnchorZ] constant that corresponds to the Z coordinate
+         of the anchor point in the forward pixels endcap reference frame, and the
+         [ZPixelForward] constant equal to the distance from CMS IP to the 
+         anchor point. 
+         
+         Therefore, in the CMS global reference frame,
+         PixelForwardZPlus has to be positioned at 
+         (0., 0., 0.) with no rotation, and 
+         PixelForwardZMinus has to be positioned at
+         (0., 0., 0.) 
+         with pixfwdCommon:Y180 rotation (180 degrees around Y axis).
+         
+         -->
+    <!-- Root volumes -->
+    <ConstantsSection label="Root" eval="true">
+        <Constant name="RootRadius" value="[pixfwdCylinder:CylindersOuterRmax]"/>
+        <Constant name="RootHalfLength" value="[pixfwdCylinder:CylindersOuterLength]/2.+ [pixfwdCylinder:CylindersEndFlangeLength]/2."/>
+        <Constant name="AnchorZ" value="0.*mm"/>
+        <Constant name="ZPixelForward" value="325.*mm"/>
+        <Constant name="RootStartZ" value="-2*mm"/>
+        <Constant name="RootMidZ3" value="[cms:TrackBeamZ1]-[ZPixelForward]"/>
+        <Constant name="RootEndZ" value="2*[RootHalfLength]"/>
+    </ConstantsSection>
+    <SolidSection label="Root">
+        <Polycone name="PixelForward" startPhi="0*deg" deltaPhi="360*deg">
+            <ZSection z="[RootStartZ]" rMin="[cms:TrackBeamR1]" rMax="[RootRadius]"/>
+            <ZSection z="[RootMidZ3]" rMin="[cms:TrackBeamR1]" rMax="[RootRadius]"/>
+            <ZSection z="[RootEndZ]" rMin="[cms:TrackBeamR2]" rMax="[RootRadius]"/>
+        </Polycone>
+    </SolidSection>
+    <LogicalPartSection label="Root">
+        <LogicalPart name="PixelForwardZPlus" category="envelope">
+            <rSolid name="PixelForward"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardZMinus" category="envelope">
+            <rSolid name="PixelForward"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <!-- Position disks inside root -->
+    <ConstantsSection label="Disks" eval="true">
+        <!-- Distances from IP-side edge of PixelForwardRoot to disk centers -->
+        <Constant name="Disk1Z" value="30*mm"/>
+        <Constant name="Disk2Z" value="160*mm"/>
+        <Constant name="Disk3Z" value="290*mm"/>
+    </ConstantsSection>
+    <PosPartSection label="Disks">
+        <!-- +Z endcap -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardZPlus"/>
+            <rChild name="pixfwdDisk:PixelForwardDiskZPlus"/>
+            <Translation x="0." y="0." z="[AnchorZ]+[Disk1Z]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardZPlus"/>
+            <rChild name="pixfwdDisk:PixelForwardDiskZPlus"/>
+            <Translation x="0." y="0." z="[AnchorZ]+[Disk2Z]"/>
+        </PosPart>
+        <!-- UNCOMMENT TO SIMULATE THE THIRD DISK -->
+        <!--  <PosPart copyNumber="3">-->
+        <!--    <rParent name="PixelForwardZPlus"/>-->
+        <!--    <rChild name="pixfwdDisk:PixelForwardDiskZPlus"/>-->
+        <!--    <Translation x="0." y="0." z="[AnchorZ]+ [Disk3Z]" />-->
+        <!--  </PosPart>-->
+        <!-- -Z endcap -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardZMinus"/>
+            <rChild name="pixfwdDisk:PixelForwardDiskZMinus"/>
+            <Translation x="0." y="0." z="[AnchorZ]+[Disk1Z]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardZMinus"/>
+            <rChild name="pixfwdDisk:PixelForwardDiskZMinus"/>
+            <Translation x="0." y="0." z="[AnchorZ]+[Disk2Z]"/>
+        </PosPart>
+        <!-- UNCOMMENT TO SIMULATE THE THIRD DISK -->
+        <!--  <PosPart copyNumber="3">-->
+        <!--    <rParent name="PixelForwardZMinus"/>-->
+        <!--    <rChild name="pixfwdDisk:PixelForwardDiskZMinus"/>-->
+        <!--    <Translation x="0." y="0." z="[AnchorZ]+[Disk3Z]" />-->
+        <!--  </PosPart>-->
+    </PosPartSection>
+    <!-- Position service cylinders inside root.
+         Since shapeless volumes are not useable at the moment, 
+         PixelForwardCylinder.xml does the actual positioning, we just tell it where to place the
+         cylinders by defining Z position of IP-side edge of service cylinder in PixelForward frame:
+         -->
+    <ConstantsSection label="ServiceCylinder" eval="true">
+        <Constant name="ZCylinder" value="[AnchorZ]"/>
+    </ConstantsSection>
+    <PosPartSection label="Cylinders">
+        <!-- +Z endcap -->
+        <PosPart copyNumber="1">
+            <rParent name="pixfwd:PixelForwardZPlus"/>
+            <rChild name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <Translation x="0." y="0." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwd:PixelForwardZPlus"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderEndFlange"/>
+            <Translation x="0." y="0." z="[pixfwd:ZCylinder]+[pixfwdCylinder:CylindersOuterLength]+[pixfwdCylinder:CylindersEndFlangeLength]/2."/>
+            <rRotation name="pixfwdCylinder:EndFlangeRot1"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwd:PixelForwardZPlus"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderEndFlange"/>
+            <Translation x="0." y="0." z="[pixfwd:ZCylinder]+[pixfwdCylinder:CylindersOuterLength]+[pixfwdCylinder:CylindersEndFlangeLength]/2."/>
+            <rRotation name="pixfwdCylinder:EndFlangeRot2"/>
+            <!-- xt rRotation name="pixfwdCommon:Z180" / xt-->
+        </PosPart>
+        <!-- xt PosPart copyNumber="1">
+             <rParent name="pixfwd:PixelForwardZPlus"/>
+             <rChild name="pixfwdCylinder:PixelForwardCylinderBackCyl"/>
+             <Translation x="0." y="0." z="[pixfwd:ZCylinder]+[pixfwdCylinder:CylindersFrontLength]+[pixfwdCylinder:CylinderBackLength]/2." />
+        </PosPart xt -->
+        <!-- -Z endcap -->
+        <PosPart copyNumber="1">
+            <rParent name="pixfwd:PixelForwardZMinus"/>
+            <rChild name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <Translation x="0." y="0." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwd:PixelForwardZMinus"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderEndFlange"/>
+            <Translation x="0." y="0." z="[pixfwd:ZCylinder]+[pixfwdCylinder:CylindersOuterLength]+[pixfwdCylinder:CylindersEndFlangeLength]/2."/>
+            <rRotation name="pixfwdCylinder:EndFlangeRot1"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwd:PixelForwardZMinus"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderEndFlange"/>
+            <Translation x="0." y="0." z="[pixfwd:ZCylinder]+[pixfwdCylinder:CylindersOuterLength]+[pixfwdCylinder:CylindersEndFlangeLength]/2."/>
+            <rRotation name="pixfwdCylinder:EndFlangeRot2"/>
+        </PosPart>
+        <!-- xt PosPart copyNumber="1">
+             <rParent name="pixfwd:PixelForwardZMinus"/>
+             <rChild name="pixfwdCylinder:PixelForwardCylinderBackCyl"/>
+             <Translation x="0." y="0." z="[pixfwd:ZCylinder]+[pixfwdCylinder:CylindersFrontLength]+[pixfwdCylinder:CylinderBackLength]/2." />
+        </PosPart xt -->
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdBlade.xml b/examples/DDCMS/data/pixfwdBlade.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6588cc68bf00ebe63c42e99c5a249f0415894147
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdBlade.xml
@@ -0,0 +1,551 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         @modified Vesna Cuplov (fix overlaps 05.02.07)
+         
+         == Subsystem or component described by the file ==
+         
+         Aluminum base of a blade with a cooling channel (no nipples, no panels). 
+         
+         == Root volume and its reference frame ==
+         
+         "PixelForwardBlade"
+         
+         Y is along the axis of the blade, from narrow to wider end. Once the blade 
+         is positioned, its Y axis will be pointing away from the beam line.
+         Z is perpendicular to the plane of the blade, pointing from "body" (narrow) to "cover" (wide) side.
+         
+         == Positioning ==
+         
+         The file defines AnchorX, AnchorY, and AnchorZ 
+         constants that describe the coordinates of the anchor point in the blade 
+         root volume (PixelForwardBlade) reference frame.
+         Currently, [AnchorX] = [AnchorZ] = 0.
+         
+         Since the origin of the "blade frame" with respect to which DDPixFwdBlades
+         algorithm positions all one-per-blade items coincides with the blade anchor point,
+         the "child translation" vector passed to the algorithm should be
+         (-[pixfwdBlade:AnchorX], -[pixfwdBlade:AnchorY], -[pixfwdBlade:AnchorZ]).
+         
+         == Additional comments ==
+         
+         Blade is implemented so that it consists of 
+         "body" (narrow aluminum side), "cover" (wide aluminum side), and
+         "tip" (part close to inner ring, common to both sides. 
+         Cooling channel then goes into both "body" and "cover".
+         
+         Multiple boolean operations are used in describing the tip of the blade and
+         the crossbar. As a result, IguanaCMS sometimes fails to visualize it properly.
+         This seems to be a problem for visualization only, not for tracking at simulation time.
+         
+         -->
+    <!-- Blade geometry parameters: Input from drawings -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="T01" value="0.5*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="T02" value="3.0*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="T03" value="0.5*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="T04" value="2.5*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="W01" value="6.5*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="W02" value="7.5*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="W03" value="11.5*mm"/>
+        <!-- Blade01.gif -->
+        <Constant name="R01" value="8.57*mm"/>
+        <!-- Blade02.gif -->
+        <Constant name="L01" value="57.1*mm"/>
+        <!-- Blade02.gif -->
+        <Constant name="L02" value="32.38*mm"/>
+        <!-- Blade02.gif -->
+        <Constant name="L03" value="32.42*mm"/>
+        <!-- Blade02.gif -->
+        <Constant name="L09" value="48.80*mm"/>
+        <!-- Blade02.gif -->
+        <Constant name="A01" value="16.625*deg"/>
+        <!-- Blade03.gif -->
+        <Constant name="W04" value="1.0*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="W05" value="4.0*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="R02" value="2.0*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="R03" value="2.0*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="L04" value="9.79*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="L05" value="1.83*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="L10" value="3.47*mm"/>
+        <!-- Blade03.gif -->
+        <Constant name="W06" value="5.6*mm"/>
+        <!-- Blade04.gif -->
+        <Constant name="R04" value="2.0*mm"/>
+        <!-- Blade04.gif -->
+        <Constant name="L06" value="3.77*mm"/>
+        <!-- Blade04.gif -->
+        <Constant name="L07" value="3.0*mm"/>
+        <!-- Blade04.gif -->
+        <Constant name="L08" value="5.79*mm"/>
+        <!-- Blade04.gif -->
+    </ConstantsSection>
+    <!-- Calculating parameters that will be needed by multiple components : -->
+    <ConstantsSection label="Common" eval="true">
+        <!-- Root volume dimensions (may need to be changed later) -->
+        <Constant name="RootHalfLength" value="([L04]+[L03]+[L01]+[W03]/2.)/2."/>
+        <Constant name="RootHalfWidth" value="([L02]+[W03])/2."/>
+        <Constant name="RootHalfThickness" value="[BladeHalfThickness]+0.1*mm"/>
+        <!-- Coordinates of ancor point  -->
+        <Constant name="AnchorX" value="0."/>
+        <Constant name="AnchorY" value="-[RootHalfLength]+[L10]"/>
+        <Constant name="AnchorZ" value="0."/>
+        <!-- Coordinate of point 0 on Blade02.gif. All other Y-coordinates are relative to it. -->
+        <Constant name="y00" value="[AnchorY]-[L10]+[L04]+[L03]"/>
+        <!-- Others -->
+        <Constant name="zCover" value="([T02]-[T03])/2."/>
+        <Constant name="zBody" value="-([T01]+[T03])/2."/>
+        <Constant name="BladeHalfThickness" value="([T01]+[T02])/2."/>
+        <Constant name="BodyHalfThickness" value="([T02]-[T03])/2."/>
+        <Constant name="CoverHalfThickness" value="([T01]+[T03])/2."/>
+    </ConstantsSection>
+    <!-- Root volume for the blade. This volume is positioned by pixfwdDisk.xml -->
+    <!-- Previous description from D. Onoprienko
+         <SolidSection label="Root">
+         <Box name="PixelForwardBlade" dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[RootHalfThickness]" />
+    </SolidSection>
+         -->
+    <!-- New Description (05/02/07): Two overlaps were fixed. The overlap with the Nipples was fixed by removing 0.1*mm in the mother volume thickness. The second overlap was: The corners of the box describing the mother volume were going outside the DiskOuterRing, so we remove these corners with a little box for simplicity. -->
+    <SolidSection label="Root">
+        <Box name="PixelForwardBlade_main" dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[RootHalfThickness]-0.1*mm"/>
+        <Box name="PixelForwardBlade_box" dx="1.5*mm" dy="1.5*mm" dz="[RootHalfThickness]"/>
+        <SubtractionSolid name="PixelForwardBlade_Left_subtraction">
+            <rSolid name="PixelForwardBlade_main"/>
+            <rSolid name="PixelForwardBlade_box"/>
+            <Translation x="-[RootHalfWidth]" y="[RootHalfLength]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="PixelForwardBlade">
+            <rSolid name="PixelForwardBlade_Left_subtraction"/>
+            <rSolid name="PixelForwardBlade_box"/>
+            <Translation x="[RootHalfWidth]" y="[RootHalfLength]" z="0."/>
+        </SubtractionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Root">
+        <LogicalPart name="PixelForwardBlade" category="envelope">
+            <rSolid name="PixelForwardBlade"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <!-- Constants for Body and Cover -->
+    <ConstantsSection label="BodyCover" eval="true">
+        <Constant name="e01" value="[L02]/2."/>
+        <Constant name="e02" value="sqrt([e01]*[e01]+[L01]*[L01]-[R01]*[R01])"/>
+        <!-- length of straight part of cooling channel -->
+        <Constant name="a01" value="atan([e01]/[L01])-atan([R01]/[e02])"/>
+        <!-- angle between blade axis and straight part of cooling channel -->
+        <Constant name="sin01" value="sin([a01])"/>
+        <Constant name="cos01" value="cos([a01])"/>
+        <Constant name="x04" value="[L02]/2."/>
+        <Constant name="y05" value="[y00]+[L01]"/>
+        <Constant name="x03" value="([R01]*[cos01]+[x04])/2."/>
+        <Constant name="y04" value="[y00]+(-[R01]*[sin01]+[L01])/2."/>
+        <Constant name="e03" value="([L03]*cos([A01]))/2."/>
+        <Constant name="r01" value="([R01]+[W02]/2.-[W04]/2.)"/>
+        <Constant name="y02" value="-[r01]*sin([A01])-[e03]*cos([A01])"/>
+        <Constant name="x01" value="[r01]*cos([A01])-[e03]*sin([A01])"/>
+        <Constant name="x06" value="[L07]/2.+[R04]+[L06]/2."/>
+    </ConstantsSection>
+    <!-- Body -->
+    <SolidSection label="Body">
+        <Box name="PixelForwardBladeBody01" dx="[W02]/2." dy="[e02]/2." dz="[BodyHalfThickness]"/>
+        <Tubs name="PixelForwardBladeBody02_01" rMin="[R01]-[W02]/2." rMax="[R01]+[W02]/2." dz="[BodyHalfThickness]" startPhi="-180.*deg+[a01]" deltaPhi="180.*deg-2.*[a01]"/>
+        <Box name="PixelForwardBladeBody02_02" dx="[W04]/2." dy="[e03]" dz="[BodyHalfThickness]"/>
+        <Box name="PixelForwardBladeBody02_03" dx="[W04]/2." dy="[e03]" dz="[BodyHalfThickness]"/>
+        <UnionSolid name="PixelForwardBladeBody02_int01">
+            <rSolid name="PixelForwardBladeBody02_01"/>
+            <rSolid name="PixelForwardBladeBody02_02"/>
+            <Translation x="-[x01]" y="[y02]" z="0."/>
+            <rRotation name="LeftArm02"/>
+        </UnionSolid>
+        <UnionSolid name="PixelForwardBladeBody02">
+            <rSolid name="PixelForwardBladeBody02_int01"/>
+            <rSolid name="PixelForwardBladeBody02_03"/>
+            <Translation x="[x01]" y="[y02]" z="0."/>
+            <rRotation name="RightArm02"/>
+        </UnionSolid>
+        <Tubs name="PixelForwardBladeBody03" rMin="0." rMax="[W02]/2." dz="[BodyHalfThickness]" startPhi="0*deg" deltaPhi="180*deg"/>
+        <!-- Crossbar -->
+        <Trapezoid name="PixelForwardBladeBody04" dz="[BodyHalfThickness]" bl1="([R01]-[W02]/2.)/[cos01]+([L09]-[W06]/2.)*tan([a01])" bl2="([R01]-[W02]/2.)/[cos01]+([L09]-[W06]/2.)*tan([a01])" tl1="([R01]-[W02]/2.)/[cos01]+([L09]+[W06]/2.)*tan([a01])" tl2="([R01]-[W02]/2.)/[cos01]+([L09]+[W06]/2.)*tan([a01])" h1="[W06]/2." h2="[W06]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Box name="PixelForwardBladeBody05_01" dx="[L08]/2." dy="[R04]" dz="[BodyHalfThickness]"/>
+        <Tubs name="PixelForwardBladeBody05_02" rMin="0." rMax="[R04]" dz="[BodyHalfThickness]" startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardBladeBody05_03" rMin="0." rMax="[R04]" dz="[BodyHalfThickness]" startPhi="0." deltaPhi="360*deg"/>
+        <UnionSolid name="PixelForwardBladeBody05_int01">
+            <rSolid name="PixelForwardBladeBody05_01"/>
+            <rSolid name="PixelForwardBladeBody05_02"/>
+            <Translation x="[L08]/2." y="0." z="0."/>
+        </UnionSolid>
+        <UnionSolid name="PixelForwardBladeBody05">
+            <rSolid name="PixelForwardBladeBody05_int01"/>
+            <rSolid name="PixelForwardBladeBody05_03"/>
+            <Translation x="-[L08]/2." y="0." z="0."/>
+        </UnionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Body">
+        <LogicalPart name="PixelForwardBladeBody01_Left" category="support">
+            <rSolid name="PixelForwardBladeBody01"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeBody01_Right" category="support">
+            <rSolid name="PixelForwardBladeBody01"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeBody02" category="support">
+            <rSolid name="PixelForwardBladeBody02"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeBody03_Left" category="support">
+            <rSolid name="PixelForwardBladeBody03"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeBody03_Right" category="support">
+            <rSolid name="PixelForwardBladeBody03"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeBody04" category="support">
+            <rSolid name="PixelForwardBladeBody04"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeBody05" category="support">
+            <rSolid name="PixelForwardBladeBody05"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Body">
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeBody01_Left"/>
+            <Translation x="-[x03]" y="[y04]" z="[zBody]"/>
+            <rRotation name="LeftArm01"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeBody01_Right"/>
+            <Translation x="[x03]" y="[y04]" z="[zBody]"/>
+            <rRotation name="RightArm01"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeBody02"/>
+            <Translation x="0." y="[y00]" z="[zBody]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeBody03_Left"/>
+            <Translation x="-[x04]" y="[y05]" z="[zBody]"/>
+            <rRotation name="LeftArm01"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeBody03_Right"/>
+            <Translation x="[x04]" y="[y05]" z="[zBody]"/>
+            <rRotation name="RightArm01"/>
+        </PosPart>
+        <!-- Crossbar -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeBody04"/>
+            <Translation x="0." y="[y00]+[L09]" z="[zBody]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeBody04"/>
+            <rChild name="PixelForwardBladeBody05"/>
+            <Translation x="[x06]" y="0." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardBladeBody04"/>
+            <rChild name="PixelForwardBladeBody05"/>
+            <Translation x="-[x06]" y="0." z="0."/>
+        </PosPart>
+    </PosPartSection>
+    <!-- Cover -->
+    <SolidSection label="Cover">
+        <Box name="PixelForwardBladeCover01" dx="[W03]/2." dy="[e02]/2." dz="[CoverHalfThickness]"/>
+        <Tubs name="PixelForwardBladeCover02_01" rMin="[R01]-[W03]/2." rMax="[R01]+[W03]/2." dz="[CoverHalfThickness]" startPhi="-180.*deg+[a01]" deltaPhi="180.*deg-2.*[a01]"/>
+        <Box name="PixelForwardBladeCover02_02" dx="[W04]/2." dy="[e03]" dz="[CoverHalfThickness]"/>
+        <Box name="PixelForwardBladeCover02_03" dx="[W04]/2." dy="[e03]" dz="[CoverHalfThickness]"/>
+        <UnionSolid name="PixelForwardBladeCover02_int01">
+            <rSolid name="PixelForwardBladeCover02_01"/>
+            <rSolid name="PixelForwardBladeCover02_02"/>
+            <Translation x="-[x01]" y="[y02]" z="0."/>
+            <rRotation name="LeftArm02"/>
+        </UnionSolid>
+        <UnionSolid name="PixelForwardBladeCover02">
+            <rSolid name="PixelForwardBladeCover02_int01"/>
+            <rSolid name="PixelForwardBladeCover02_03"/>
+            <Translation x="[x01]" y="[y02]" z="0."/>
+            <rRotation name="RightArm02"/>
+        </UnionSolid>
+        <Tubs name="PixelForwardBladeCover03" rMin="0." rMax="[W03]/2." dz="[CoverHalfThickness]" startPhi="0*deg" deltaPhi="180*deg"/>
+        <!-- Crossbar -->
+        <Trapezoid name="PixelForwardBladeCover04_01" dz="[CoverHalfThickness]" bl1="([R01]-[W03]/2.)/[cos01]+([L09]-[W06]/2.)*tan([a01])" bl2="([R01]-[W03]/2.)/[cos01]+([L09]-[W06]/2.)*tan([a01])" tl1="([R01]-[W03]/2.)/[cos01]+([L09]+[W06]/2.)*tan([a01])" tl2="([R01]-[W03]/2.)/[cos01]+([L09]+[W06]/2.)*tan([a01])" h1="[W06]/2." h2="[W06]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Box name="PixelForwardBladeCover04_02" dx="[L06]/2." dy="[CoverHalfThickness]+[pixfwdCommon:SmallBool]" dz="[R04]"/>
+        <Box name="PixelForwardBladeCover04_03" dx="[L06]/2." dy="[CoverHalfThickness]+[pixfwdCommon:SmallBool]" dz="[R04]"/>
+        <Tubs name="PixelForwardBladeCover04_04" rMin="0." rMax="[R04]" dz="[CoverHalfThickness]+[pixfwdCommon:SmallBool]" startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardBladeCover04_05" rMin="0." rMax="[R04]" dz="[CoverHalfThickness]+[pixfwdCommon:SmallBool]" startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardBladeCover04_06" rMin="0." rMax="[R04]" dz="[CoverHalfThickness]+[pixfwdCommon:SmallBool]" startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardBladeCover04_07" rMin="0." rMax="[R04]" dz="[CoverHalfThickness]+[pixfwdCommon:SmallBool]" startPhi="0." deltaPhi="360*deg"/>
+        <SubtractionSolid name="PixelForwardBladeCover04_int01">
+            <rSolid name="PixelForwardBladeCover04_01"/>
+            <rSolid name="PixelForwardBladeCover04_02"/>
+            <Translation x="[L07]/2.+[R04]+[L06]/2." y="0." z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="PixelForwardBladeCover04_int02">
+            <rSolid name="PixelForwardBladeCover04_int01"/>
+            <rSolid name="PixelForwardBladeCover04_03"/>
+            <Translation x="-[L07]/2.-[R04]-[L06]/2." y="0." z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="PixelForwardBladeCover04_int03">
+            <rSolid name="PixelForwardBladeCover04_int02"/>
+            <rSolid name="PixelForwardBladeCover04_04"/>
+            <Translation x="-[L07]/2.-[R04]" y="0." z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="PixelForwardBladeCover04_int04">
+            <rSolid name="PixelForwardBladeCover04_int03"/>
+            <rSolid name="PixelForwardBladeCover04_05"/>
+            <Translation x="-[L07]/2.-[R04]-[L06]" y="0." z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="PixelForwardBladeCover04_int05">
+            <rSolid name="PixelForwardBladeCover04_int04"/>
+            <rSolid name="PixelForwardBladeCover04_06"/>
+            <Translation x="[L07]/2.+[R04]" y="0." z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="PixelForwardBladeCover04">
+            <rSolid name="PixelForwardBladeCover04_int05"/>
+            <rSolid name="PixelForwardBladeCover04_07"/>
+            <Translation x="[L07]/2.+[R04]+[L06]" y="0." z="0."/>
+        </SubtractionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Cover">
+        <LogicalPart name="PixelForwardBladeCover01_Left" category="support">
+            <rSolid name="PixelForwardBladeCover01"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeCover01_Right" category="support">
+            <rSolid name="PixelForwardBladeCover01"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeCover02" category="support">
+            <rSolid name="PixelForwardBladeCover02"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeCover03_Left" category="support">
+            <rSolid name="PixelForwardBladeCover03"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeCover03_Right" category="support">
+            <rSolid name="PixelForwardBladeCover03"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeCover04" category="support">
+            <rSolid name="PixelForwardBladeCover04"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Cover">
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeCover01_Left"/>
+            <Translation x="-[x03]" y="[y04]" z="[zCover]"/>
+            <rRotation name="LeftArm01"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeCover01_Right"/>
+            <Translation x="[x03]" y="[y04]" z="[zCover]"/>
+            <rRotation name="RightArm01"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeCover02"/>
+            <Translation x="0." y="[y00]" z="[zCover]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeCover03_Left"/>
+            <Translation x="-[x04]" y="[y05]" z="[zCover]"/>
+            <rRotation name="LeftArm01"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeCover03_Right"/>
+            <Translation x="[x04]" y="[y05]" z="[zCover]"/>
+            <rRotation name="RightArm01"/>
+        </PosPart>
+        <!-- Crossbar -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeCover04"/>
+            <Translation x="0." y="[y00]+[L09]" z="[zCover]"/>
+        </PosPart>
+    </PosPartSection>
+    <!-- Tip -->
+    <ConstantsSection label="Tip" eval="true">
+        <Constant name="r02" value="[R01]+[W02]/2.-[L03]*sin([A01])"/>
+        <Constant name="r03" value="[r02]-[W04]"/>
+        <Constant name="e04" value="([L04]-[r03])/2."/>
+        <Constant name="e05" value="(([r02]*cos([A01])-[W05]/2.)/sin([A01]))/2."/>
+        <Constant name="y03" value="-([r02]-[W04]/2.)*sin([A01])-[e05]*cos([A01])"/>
+        <Constant name="x02" value="([r02]-[W04]/2.)*cos([A01])-[e05]*sin([A01])"/>
+    </ConstantsSection>
+    <SolidSection label="Tip">
+        <Tubs name="PixelForwardBladeTip01_01" rMin="[r03]" rMax="[r02]" dz="[BladeHalfThickness]" startPhi="180.*deg+[A01]" deltaPhi="180.*deg-2.*[A01]"/>
+        <Box name="PixelForwardBladeTip01_02" dx="[W05]/2." dy="[e04]-[pixfwdCommon:SmallBool]" dz="[BladeHalfThickness]"/>
+        <Tubs name="PixelForwardBladeTip01_03" rMin="[R02]" rMax="[R02]*sqrt(2.)" dz="[BladeHalfThickness]+[pixfwdCommon:SmallBool]" startPhi="180.*deg" deltaPhi="180.*deg"/>
+        <Box name="PixelForwardBladeTip01_04" dx="[W04]/2." dy="[e05]" dz="[BladeHalfThickness]"/>
+        <Box name="PixelForwardBladeTip01_05" dx="[W04]/2." dy="[e05]" dz="[BladeHalfThickness]"/>
+        <UnionSolid name="PixelForwardBladeTip01_int01">
+            <rSolid name="PixelForwardBladeTip01_01"/>
+            <rSolid name="PixelForwardBladeTip01_04"/>
+            <Translation x="-[x02]" y="[y03]" z="0."/>
+            <rRotation name="LeftArm02"/>
+        </UnionSolid>
+        <UnionSolid name="PixelForwardBladeTip01_int02">
+            <rSolid name="PixelForwardBladeTip01_int01"/>
+            <rSolid name="PixelForwardBladeTip01_05"/>
+            <Translation x="[x02]" y="[y03]" z="0."/>
+            <rRotation name="RightArm02"/>
+        </UnionSolid>
+        <UnionSolid name="PixelForwardBladeTip01_int03">
+            <rSolid name="PixelForwardBladeTip01_int02"/>
+            <rSolid name="PixelForwardBladeTip01_02"/>
+            <Translation x="0." y="-[r03]-[e04]-[pixfwdCommon:SmallBool]" z="0."/>
+        </UnionSolid>
+        <SubtractionSolid name="PixelForwardBladeTip01">
+            <rSolid name="PixelForwardBladeTip01_int03"/>
+            <rSolid name="PixelForwardBladeTip01_03"/>
+            <Translation x="0." y="-[L04]+[L05]" z="0."/>
+        </SubtractionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Tip">
+        <LogicalPart name="PixelForwardBladeTip01" category="support">
+            <rSolid name="PixelForwardBladeTip01"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Tip">
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBlade"/>
+            <rChild name="PixelForwardBladeTip01"/>
+            <Translation x="0." y="[y00]-[L03]" z="0."/>
+        </PosPart>
+    </PosPartSection>
+    <!-- Cooling channel -->
+    <ConstantsSection label="Channel" eval="true">
+        <Constant name="ChanBodyHalfThickness" value="([T04]-[T03])/2."/>
+        <Constant name="ChanCoverHalfThickness" value="[T03]/2."/>
+        <Constant name="z03" value="[BodyHalfThickness]-[ChanBodyHalfThickness]"/>
+        <!-- Channel central plane inside body -->
+        <Constant name="z04" value="-[CoverHalfThickness]+[ChanCoverHalfThickness]"/>
+        <!-- Channel central plane inside cover -->
+    </ConstantsSection>
+    <SolidSection label="Channel">
+        <Box name="PixelForwardBladeChan01_Body" dx="[W01]/2." dy="[e02]/2." dz="[ChanBodyHalfThickness]"/>
+        <Box name="PixelForwardBladeChan01_Cover" dx="[W01]/2." dy="[e02]/2." dz="[ChanCoverHalfThickness]"/>
+        <Tubs name="PixelForwardBladeChan02_Body" rMin="[R01]-[W01]/2." rMax="[R01]+[W01]/2." dz="[ChanBodyHalfThickness]" startPhi="180.*deg+[a01]" deltaPhi="180.*deg-2.*[a01]"/>
+        <Tubs name="PixelForwardBladeChan02_Cover" rMin="[R01]-[W01]/2." rMax="[R01]+[W01]/2." dz="[ChanCoverHalfThickness]" startPhi="180.*deg+[a01]" deltaPhi="180.*deg-2.*[a01]"/>
+        <Tubs name="PixelForwardBladeChan03_Body" rMin="0." rMax="[W01]/2." dz="[ChanBodyHalfThickness]" startPhi="0*deg" deltaPhi="180*deg"/>
+        <Tubs name="PixelForwardBladeChan03_Cover" rMin="0." rMax="[W01]/2." dz="[ChanCoverHalfThickness]" startPhi="0*deg" deltaPhi="180*deg"/>
+    </SolidSection>
+    <LogicalPartSection label="Channel">
+        <LogicalPart name="PixelForwardBladeChan01_Body" category="cooling">
+            <rSolid name="PixelForwardBladeChan01_Body"/>
+            <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeChan01_Cover" category="cooling">
+            <rSolid name="PixelForwardBladeChan01_Cover"/>
+            <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeChan02_Body" category="cooling">
+            <rSolid name="PixelForwardBladeChan02_Body"/>
+            <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeChan02_Cover" category="cooling">
+            <rSolid name="PixelForwardBladeChan02_Cover"/>
+            <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeChan03_Body" category="cooling">
+            <rSolid name="PixelForwardBladeChan03_Body"/>
+            <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBladeChan03_Cover" category="cooling">
+            <rSolid name="PixelForwardBladeChan03_Cover"/>
+            <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Channel">
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeBody01_Left"/>
+            <rChild name="PixelForwardBladeChan01_Body"/>
+            <Translation x="0." y="0." z="[z03]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardBladeBody01_Right"/>
+            <rChild name="PixelForwardBladeChan01_Body"/>
+            <Translation x="0." y="0." z="[z03]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeCover01_Left"/>
+            <rChild name="PixelForwardBladeChan01_Cover"/>
+            <Translation x="0." y="0." z="[z04]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardBladeCover01_Right"/>
+            <rChild name="PixelForwardBladeChan01_Cover"/>
+            <Translation x="0." y="0." z="[z04]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeBody02"/>
+            <rChild name="PixelForwardBladeChan02_Body"/>
+            <Translation x="0." y="0." z="[z03]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeCover02"/>
+            <rChild name="PixelForwardBladeChan02_Cover"/>
+            <Translation x="0." y="0." z="[z04]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeBody03_Left"/>
+            <rChild name="PixelForwardBladeChan03_Body"/>
+            <Translation x="0." y="0." z="[z03]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardBladeBody03_Right"/>
+            <rChild name="PixelForwardBladeChan03_Body"/>
+            <Translation x="0." y="0." z="[z03]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBladeCover03_Left"/>
+            <rChild name="PixelForwardBladeChan03_Cover"/>
+            <Translation x="0." y="0." z="[z04]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardBladeCover03_Right"/>
+            <rChild name="PixelForwardBladeChan03_Cover"/>
+            <Translation x="0." y="0." z="[z04]"/>
+        </PosPart>
+    </PosPartSection>
+    <!-- All rotations -->
+    <RotationSection label="Blade">
+        <Rotation name="LeftArm01" phiX="[a01]" thetaX="90.*deg" phiY="90.*deg + [a01]" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="RightArm01" phiX="-[a01]" thetaX="90.*deg" phiY="90.*deg - [a01]" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="LeftArm02" phiX="[A01]" thetaX="90.*deg" phiY="90.*deg + [A01]" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="RightArm02" phiX="-[A01]" thetaX="90.*deg" phiY="90.*deg - [A01]" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+    </RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdCommon.xml b/examples/DDCMS/data/pixfwdCommon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dbdc0591f6a9d159886d65e99dcbe4d921a39438
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdCommon.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         
+         == COMPONENT DEFINED BY THIS FILE: ==
+         
+         Constants and rotations required by multiple components.
+         
+         -->
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="SmallBool" value="0.01*mm"/>
+        <!-- Small value used to make boolean-subtracted volumes
+             slightly larger then their mothers, so that Iguana 
+             can visualize them properly -->
+    </ConstantsSection>
+    <RotationSection label="Root">
+        <Rotation name="Y180" phiX="180.*deg" thetaX="90.*deg" phiY="90.*deg" thetaY="90.*deg" phiZ="0.*deg" thetaZ="180.*deg"/>
+        <Rotation name="Z180" phiX="180.*deg" thetaX="90.*deg" phiY="270.*deg" thetaY="90.*deg" phiZ="0.*deg" thetaZ="0.*deg"/>
+        <ReflectionRotation name="ReflectionX" phiX="180.*deg" thetaX="90.*deg" phiY="90.*deg" thetaY="90.*deg" phiZ="0.*deg" thetaZ="0.*deg"/>
+    </RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdCylinder.xml b/examples/DDCMS/data/pixfwdCylinder.xml
new file mode 100644
index 0000000000000000000000000000000000000000..066d8d52707b8970696835cf4e71b9a9bf4ffe37
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdCylinder.xml
@@ -0,0 +1,343 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         @modified Xingtao Huang to implement the fpix service cylinder
+         @modified Vesna Cuplov to fix the Electronics boards positions (august 2008).
+         
+         
+         == COMPONENT DEFINED BY THIS FILE: ==
+         
+         Service cylinders.
+         
+         == Comments : ==
+         
+         Currently, only three graphite cylinders are described. No ribs, cables, coolant pipes, circuit boards, etc. 
+         And unlike files for all other subsystems, this file does not define a root volume, but instead positions 
+         new volumes directly into pixfwd:PixelForwardZPlus and pixfwd:PixelForwardZMinus, using 
+         the pixfwd:ZCylinder constant defined in pixfwd.xml.
+         
+         The reason is that many components that should go into service cylinders have not been designed yet, 
+         and it's not clear what shape the root volume will eventually have to have, what symmetry 
+         between Z+ and Z- endcaps we will be able to use, and so on. Once the exact geometry is known, 
+         the file will need to be modified to follow the standard scheme for forward pixels geometry - 
+         root volume plus an anchor point for positioning. 
+         
+         -->
+    <ConstantsSection label="Cylinders" eval="true">
+        <Constant name="CylindersOuterRmin" value="160.00*mm"/>
+        <Constant name="CylindersOuterRmax" value="168.50*mm"/>
+        <Constant name="CylindersOuterLength" value="2101.09*mm"/>
+        <Constant name="CylindersEndFlangeRmin" value="132.50*mm"/>
+        <Constant name="CylindersEndFlangeRmax" value="160.50*mm"/>
+        <Constant name="CylindersEndFlangeLength" value="41.30*mm"/>
+        <Constant name="CylindersElectronicsRmin" value="117.20*mm"/>
+        <Constant name="CylindersElectronicsRmax" value="160.00*mm"/>
+        <Constant name="CylindersElectronicsLength" value="132.08*mm"/>
+        <Constant name="CylindersCoilFiberWidth" value="98.48*mm"/>
+        <Constant name="CylindersCoilFiberLength" value="582.97*mm"/>
+        <Constant name="CylindersCoilFiberThickness" value="12.70*mm"/>
+        <Constant name="CylinderPipeRmax" value="15.0/2.0*mm"/>
+        <Constant name="CylinderPipeRmin" value="9.02/2.0*mm"/>
+        <Constant name="CylinderPipeLength1" value="(1177.16-239.58)*mm"/>
+        <Constant name="CylinderPipeLength2" value="823.60*mm"/>
+        <Constant name="CylindersPortCardsWidth" value="60.0*mm"/>
+        <Constant name="CylindersPortCardsLength1" value="223.52*mm"/>
+        <Constant name="CylindersPortCardsLength2" value="355.60*mm"/>
+        <Constant name="CylindersPortCardsThickness" value="5.40*mm"/>
+        <Constant name="CylindersServiceZoff" value="320.0*mm"/>
+        <Constant name="CylindersServiceRmin" value="100*mm"/>
+        <Constant name="CylindersServiceZ0" value="0*mm"/>
+        <Constant name="CylindersServiceZMin" value="[CylindersServiceZoff]"/>
+        <Constant name="CylindersServiceZMax" value="[CylindersOuterLength]"/>
+    </ConstantsSection>
+    <RotationSection label="Cylinders">
+        <Rotation name="EndFlangeRot1" phiX="290.*deg" thetaX="90.*deg" phiY="20.*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="EndFlangeRot2" phiX="110.*deg" thetaX="90.*deg" phiY="200.*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="ElectronicsRot1" phiX="39.31*deg" thetaX="90.*deg" phiY="129.31*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="ElectronicsRot2" phiX="39.31*deg" thetaX="90.*deg" phiY="129.31*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="CoilFiberRot1" phiX="317.19*deg" thetaX="90.*deg" phiY="47.19*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="CoilFiberRot2" phiX="222.81*deg" thetaX="90.*deg" phiY="312.81*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="CoilFiberRot3" phiX="42.81*deg" thetaX="90.*deg" phiY="132.81*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="CoilFiberRot4" phiX="137.19*deg" thetaX="90.*deg" phiY="227.19*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot1" phiX="337.5*deg" thetaX="90.*deg" phiY="67.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot2" phiX="292.5*deg" thetaX="90.*deg" phiY="22.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot3" phiX="247.5*deg" thetaX="90.*deg" phiY="337.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot4" phiX="202.5*deg" thetaX="90.*deg" phiY="292.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot5" phiX="22.5*deg" thetaX="90.*deg" phiY="112.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot6" phiX="67.5*deg" thetaX="90.*deg" phiY="157.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot7" phiX="112.5*deg" thetaX="90.*deg" phiY="202.5*deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+        <Rotation name="PortCardsRot8" phiX="157.5*deg" thetaX="90.*deg" phiY="247.5* deg" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+    </RotationSection>
+    <SolidSection label="Cylinders">
+        <Polycone name="PixelForwardServiceCylinder" startPhi="0*deg" deltaPhi="360*deg">
+            <ZSection z="[CylindersServiceZ0]" rMin="[CylindersOuterRmin]" rMax="[CylindersOuterRmax]"/>
+            <ZSection z="[CylindersServiceZMin]" rMin="[CylindersOuterRmin]" rMax="[CylindersOuterRmax]"/>
+            <ZSection z="[CylindersServiceZMin]" rMin="[CylindersServiceRmin]" rMax="[CylindersOuterRmax]"/>
+            <ZSection z="[CylindersServiceZMax]" rMin="[CylindersServiceRmin]" rMax="[CylindersOuterRmax]"/>
+        </Polycone>
+        <Tubs name="PixelForwardCylinderOuterCyl" rMin="[CylindersOuterRmin]" rMax="[CylindersOuterRmax]" dz="[CylindersOuterLength]/2." startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardCylinderEndFlange" rMin="[CylindersEndFlangeRmin]" rMax="[CylindersEndFlangeRmax]" dz="[CylindersEndFlangeLength]/2." startPhi="0.*deg" deltaPhi="140.*deg"/>
+        <Tubs name="PixelForwardCylinderElectronics1" rMin="[CylindersElectronicsRmin]" rMax="[CylindersElectronicsRmax]" dz="[CylindersElectronicsLength]/2." startPhi="19.79*deg" deltaPhi="33.57*deg"/>
+        <Tubs name="PixelForwardCylinderElectronics2" rMin="[CylindersElectronicsRmin]" rMax="[CylindersElectronicsRmax]" dz="[CylindersElectronicsLength]/2." startPhi="121.17*deg" deltaPhi="39.04*deg"/>
+        <Tubs name="PixelForwardCylinderElectronics3" rMin="[CylindersElectronicsRmin]" rMax="[CylindersElectronicsRmax]" dz="[CylindersElectronicsLength]/2." startPhi="302.75*deg" deltaPhi="39.04*deg"/>
+        <Tubs name="PixelForwardCylinderElectronics4" rMin="[CylindersElectronicsRmin]" rMax="[CylindersElectronicsRmax]" dz="[CylindersElectronicsLength]/2." startPhi="203.675*deg" deltaPhi="33.57*deg"/>
+        <Box name="PixelForwardCylindersCoilFiber" dx="[CylindersCoilFiberWidth]/2." dy="[CylindersCoilFiberThickness]/2." dz="[CylindersCoilFiberLength]/2."/>
+        <Tubs name="PixelForwardCylinderPipe1" rMin="[CylinderPipeRmin]" rMax="[CylinderPipeRmax]" dz="[CylinderPipeLength1]/2." startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardCylinderPipe2" rMin="[CylinderPipeRmin]" rMax="[CylinderPipeRmax]" dz="[CylinderPipeLength2]/2." startPhi="0." deltaPhi="360*deg"/>
+        <Box name="PixelForwardCylindersPortCards1" dx="[CylindersPortCardsWidth]/2." dy="[CylindersPortCardsThickness]/2." dz="[CylindersPortCardsLength1]/2."/>
+        <Box name="PixelForwardCylindersPortCards2" dx="[CylindersPortCardsWidth]/2." dy="[CylindersPortCardsThickness]/2." dz="[CylindersPortCardsLength2]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="Cylinders">
+        <LogicalPart name="PixelForwardServiceCylinder" category="support">
+            <rSolid name="PixelForwardServiceCylinder"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderOuterCyl" category="support">
+            <rSolid name="PixelForwardCylinderOuterCyl"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_Servi_Cylind"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderEndFlange" category="support">
+            <rSolid name="PixelForwardCylinderEndFlange"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Flange"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderElectronics1" category="support">
+            <rSolid name="PixelForwardCylinderElectronics1"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Electro_2"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderElectronics2" category="support">
+            <rSolid name="PixelForwardCylinderElectronics2"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Electro_1"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderElectronics3" category="support">
+            <rSolid name="PixelForwardCylinderElectronics3"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Electro_1"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderElectronics4" category="support">
+            <rSolid name="PixelForwardCylinderElectronics4"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Electro_2"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylindersCoilFiber" category="support">
+            <rSolid name="PixelForwardCylindersCoilFiber"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Coil_Fiber"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderPipe1" category="support">
+            <rSolid name="PixelForwardCylinderPipe1"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Pipe_1"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylinderPipe2" category="support">
+            <rSolid name="PixelForwardCylinderPipe2"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_End_Pipe_2"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylindersPortCards1" category="support">
+            <rSolid name="PixelForwardCylindersPortCards1"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_Port_Cards"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardCylindersPortCards2" category="support">
+            <rSolid name="PixelForwardCylindersPortCards2"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_Port_Cards"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <ConstantsSection label="CylindersPosition" eval="true">
+        <Constant name="ZOuterCylinder" value="([pixfwd:AnchorZ]+[CylindersOuterLength]/2.0)"/>
+        <Constant name="CoilFiblerToIP" value="1538.97*mm"/>
+        <Constant name="CoilFilberToBeam" value="114.7*mm"/>
+        <Constant name="CoilFilberAngle" value="47.19*deg"/>
+        <!--Constant name="FractionForPipe" value="0.9499"/-->
+        <Constant name="FractionForPipe" value="0.99"/>
+        <Constant name="PipeX1" value="19.9*mm"/>
+        <Constant name="PipeX2" value="151.7*mm"/>
+        <Constant name="PipeY1" value="150.4*mm"/>
+        <Constant name="PipeY2" value="16.9*mm"/>
+        <Constant name="PipeToIP1" value="([pixfwd:ZPixelForward]+[CylindersServiceZMin]+[CylinderPipeLength1]/2)"/>
+        <Constant name="PipeToIP2" value="1994.38*mm"/>
+        <Constant name="PortCardsToBeam" value="143.1*mm"/>
+        <Constant name="PortCardsAngle1" value="(22.5+1)*deg"/>
+        <Constant name="PortCardsAngle2" value="(67.5-1)*deg"/>
+        <Constant name="PortCardsToIP" value="952.75*mm"/>
+        <Constant name="ZOffCylinder" value="-[pixfwd:ZPixelForward]"/>
+    </ConstantsSection>
+    <PosPartSection label="Cylinders">
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderOuterCyl"/>
+            <Translation x="0." y="0." z="[ZOuterCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderElectronics1"/>
+            <Translation x="0." y="0." z="[CylindersServiceZMax]-[CylindersElectronicsLength]/2."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderElectronics2"/>
+            <Translation x="0." y="0." z="[CylindersServiceZMax]-[CylindersElectronicsLength]/2."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderElectronics3"/>
+            <Translation x="0." y="0." z="[CylindersServiceZMax]-[CylindersElectronicsLength]/2."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderElectronics4"/>
+            <Translation x="0." y="0." z="[CylindersServiceZMax]-[CylindersElectronicsLength]/2."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersCoilFiber"/>
+            <Translation x="[CoilFilberToBeam]*cos([CoilFilberAngle])" y="[CoilFilberToBeam]*sin([CoilFilberAngle])" z="[CoilFiblerToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:CoilFiberRot1"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersCoilFiber"/>
+            <Translation x="[CoilFilberToBeam]*cos([CoilFilberAngle])" y="-[CoilFilberToBeam]*sin([CoilFilberAngle])" z="[CoilFiblerToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:CoilFiberRot2"/>
+        </PosPart>
+        <PosPart copyNumber="3">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersCoilFiber"/>
+            <Translation x="-[CoilFilberToBeam]*cos([CoilFilberAngle])" y="[CoilFilberToBeam]*sin([CoilFilberAngle])" z="[CoilFiblerToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:CoilFiberRot3"/>
+        </PosPart>
+        <PosPart copyNumber="4">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersCoilFiber"/>
+            <Translation x="-[CoilFilberToBeam]*cos([CoilFilberAngle])" y="-[CoilFilberToBeam]*sin([CoilFilberAngle])" z="[CoilFiblerToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:CoilFiberRot4"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="[PipeX1]*[FractionForPipe]" y="[PipeY1]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="[PipeX2]*[FractionForPipe]" y="[PipeY2]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="3">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="[PipeX2]*[FractionForPipe]" y="-[PipeY2]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="4">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="[PipeX1]*[FractionForPipe]" y="-[PipeY1]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="5">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="-[PipeX1]*[FractionForPipe]" y="[PipeY1]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="6">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="-[PipeX2]*[FractionForPipe]" y="[PipeY2]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="7">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="-[PipeX2]*[FractionForPipe]" y="-[PipeY2]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="8">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe1"/>
+            <Translation x="-[PipeX1]*[FractionForPipe]" y="-[PipeY1]*[FractionForPipe]" z="[PipeToIP1]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="[PipeX1]*[FractionForPipe]" y="[PipeY1]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="[PipeX2]*[FractionForPipe]" y="[PipeY2]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="3">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="[PipeX2]*[FractionForPipe]" y="-[PipeY2]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="4">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="[PipeX1]*[FractionForPipe]" y="-[PipeY1]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="5">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="-[PipeX1]*[FractionForPipe]" y="[PipeY1]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="6">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="-[PipeX2]*[FractionForPipe]" y="[PipeY2]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="7">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="-[PipeX2]*[FractionForPipe]" y="-[PipeY2]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="8">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylinderPipe2"/>
+            <Translation x="-[PipeX1]*[FractionForPipe]" y="-[PipeY1]*[FractionForPipe]" z="[PipeToIP2]+[ZOffCylinder]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards1"/>
+            <Translation x="[PortCardsToBeam]*cos([PortCardsAngle2])" y="[PortCardsToBeam]*sin([PortCardsAngle2])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot1"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards2"/>
+            <Translation x="[PortCardsToBeam]*cos([PortCardsAngle1])" y="[PortCardsToBeam]*sin([PortCardsAngle1])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot2"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards1"/>
+            <Translation x="[PortCardsToBeam]*cos([PortCardsAngle1])" y="-[PortCardsToBeam]*sin([PortCardsAngle1])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot3"/>
+        </PosPart>
+        <PosPart copyNumber="3">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards1"/>
+            <Translation x="[PortCardsToBeam]*cos([PortCardsAngle2])" y="-[PortCardsToBeam]*sin([PortCardsAngle2])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot4"/>
+        </PosPart>
+        <PosPart copyNumber="4">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards1"/>
+            <Translation x="-[PortCardsToBeam]*cos([PortCardsAngle2])" y="[PortCardsToBeam]*sin([PortCardsAngle2])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot5"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards2"/>
+            <Translation x="-[PortCardsToBeam]*cos([PortCardsAngle1])" y="[PortCardsToBeam]*sin([PortCardsAngle1])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot6"/>
+        </PosPart>
+        <PosPart copyNumber="5">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards1"/>
+            <Translation x="-[PortCardsToBeam]*cos([PortCardsAngle1])" y="-[PortCardsToBeam]*sin([PortCardsAngle1])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot7"/>
+        </PosPart>
+        <PosPart copyNumber="6">
+            <rParent name="pixfwdCylinder:PixelForwardServiceCylinder"/>
+            <rChild name="pixfwdCylinder:PixelForwardCylindersPortCards1"/>
+            <Translation x="-[PortCardsToBeam]*cos([PortCardsAngle2])" y="-[PortCardsToBeam]*sin([PortCardsAngle2])" z="[PortCardsToIP]+[ZOffCylinder]"/>
+            <rRotation name="pixfwdCylinder:PortCardsRot8"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdDisk.xml b/examples/DDCMS/data/pixfwdDisk.xml
new file mode 100644
index 0000000000000000000000000000000000000000..03f1e3678df1433373ccd711ecfcdda4f1504af2
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdDisk.xml
@@ -0,0 +1,278 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         @modified Vesna Cuplov 04.17.07
+         @modified august 2008: Aluminium_OuterRing material with appropriate density (lighter than aluminium density)   in order to comprensate the in-existing holes in the outer-ring simulation.
+         @modified Vesna Cuplov (august 2008): Inner and Outer Rings have 2 different aluminium densities.
+         
+         
+         == Subsystem or component described by the file ==
+         
+         Forward Pixels disk.
+         
+         == Root volume and its reference frame ==
+         
+         Two root volumes are defined: 
+         
+         PixelForwardDiskZPlus   (Disks for Z+ endcap)
+         PixelForwardDiskZMinus  (Disks for Z- endcap)
+         
+         X horizontal<br>
+         Y vertical pointing up<br>
+         Z along the beam line perpendicular to the disk plane, points away from IP<br>
+         
+         Origin at the center of the disk.<br>
+         
+         == Positioning ==
+         
+         Anchor point coincides with the root reference frame origin.
+         Disks are positioned into endcaps without any rotations.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="InnerRingREdge" value="49.16*mm"/>
+        <Constant name="InnerRingRMin" value="50.16*mm"/>
+        <Constant name="InnerRingRMax" value="51.16*mm"/>
+        <Constant name="InnerRingEdge" value="1.00*mm"/>
+        <Constant name="InnerRingHalfWidth" value="29.50*mm"/>
+        <Constant name="OuterRingRMin" value="157.5*mm"/>
+        <Constant name="OuterRingRMax" value="158.5*mm"/>
+        <Constant name="OuterRingREdge" value="159.5*mm"/>
+        <Constant name="OuterRingEdge" value="1.00*mm"/>
+        <Constant name="OuterRingHalfWidth" value="29.50*mm"/>
+        <!-- Layout of panels in disks (left or right). Blades are numbered in 
+             increasing phi order in the disk frame. Therefore, in the global
+             frame they are numbered in increasing phi order for the Z Plus disks,
+             in decreasing phi order, starting with blade 12, for the Z Minus disks. -->
+        <!--   "L" - left, "R" - right, "-" - no panel : 000000000111111111122222   -->
+        <!--                                                 123456789012345678901234   -->
+        <!--  <Constant name="PanelLayoutZPlus3"      value="RLLLLRLLLLLRRLLLLRLLLLLR" />-->
+        <!--  <Constant name="PanelLayoutZPlus4"      value="LLLLLLRLLLLRLLLLLLRLLLLR" />-->
+        <!--  <Constant name="PanelLayoutZMinus3"     value="LRRRRRLRRRRLLRRRRRLRRRRL" />-->
+        <!--  <Constant name="PanelLayoutZMinus4"     value="LRRRRLRRRRRRLRRRRLRRRRRR" />-->
+        <!-- Oops! DDL does not support string constants... Cut-and-paste to algorithm calls below. -->
+    </ConstantsSection>
+    <!-- Disk root -->
+    <ConstantsSection label="Root" eval="true">
+        <Constant name="DiskRmin" value="[InnerRingREdge]"/>
+        <Constant name="DiskRmax" value="[OuterRingREdge]"/>
+        <Constant name="DiskHalfWidth" value="[OuterRingHalfWidth]"/>
+    </ConstantsSection>
+    <!-- New description (modification) 04/17/07 : Panel3R, 4R and 4L were going through the Disk, so 2mm were added to the Width of the mother volume of the Disk -->
+    <SolidSection label="Root">
+        <Tubs name="PixelForwardDisk" rMin="[DiskRmin]" rMax="[DiskRmax]" dz="[DiskHalfWidth]+2.0*mm" startPhi="0." deltaPhi="360*deg"/>
+    </SolidSection>
+    <LogicalPartSection label="Root">
+        <LogicalPart name="PixelForwardDiskZPlus" category="envelope">
+            <rSolid name="PixelForwardDisk"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardDiskZMinus" category="envelope">
+            <rSolid name="PixelForwardDisk"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <!-- Support rings -->
+    <SolidSection label="Rings">
+        <Tubs name="PixelForwardDiskInnerRing" rMin="[InnerRingRMin]" rMax="[InnerRingRMax]" dz="[InnerRingHalfWidth]" startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardDiskInnerRingEdge" rMin="[InnerRingREdge]" rMax="[InnerRingRMin]" dz="[InnerRingEdge]/2." startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardDiskOuterRing" rMin="[OuterRingRMin]" rMax="[OuterRingRMax]" dz="[OuterRingHalfWidth]" startPhi="0." deltaPhi="360*deg"/>
+        <Tubs name="PixelForwardDiskOuterRingEdge" rMin="[OuterRingRMax]" rMax="[OuterRingREdge]" dz="[OuterRingEdge]/2." startPhi="0." deltaPhi="360*deg"/>
+    </SolidSection>
+    <LogicalPartSection label="Rings">
+        <LogicalPart name="PixelForwardDiskInnerRing" category="support">
+            <rSolid name="PixelForwardDiskInnerRing"/>
+            <rMaterial name="pixfwdMaterials:Aluminium_InnerRing"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardDiskInnerRingEdge" category="support">
+            <rSolid name="PixelForwardDiskInnerRingEdge"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardDiskOuterRing" category="support">
+            <rSolid name="PixelForwardDiskOuterRing"/>
+            <rMaterial name="pixfwdMaterials:Aluminium_OuterRing"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardDiskOuterRingEdge" category="support">
+            <rSolid name="PixelForwardDiskOuterRingEdge"/>
+            <rMaterial name="trackermaterial:T_Aluminium"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Rings">
+        <!-- Z Plus Disk -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZPlus"/>
+            <rChild name="PixelForwardDiskInnerRing"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZPlus"/>
+            <rChild name="PixelForwardDiskInnerRingEdge"/>
+            <Translation x="0." y="0." z="-[InnerRingHalfWidth]-[InnerRingEdge]/2."/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardDiskZPlus"/>
+            <rChild name="PixelForwardDiskInnerRingEdge"/>
+            <Translation x="0." y="0." z="[InnerRingHalfWidth]+[InnerRingEdge]/2."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZPlus"/>
+            <rChild name="PixelForwardDiskOuterRing"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZPlus"/>
+            <rChild name="PixelForwardDiskOuterRingEdge"/>
+            <Translation x="0." y="0." z="-[OuterRingHalfWidth]-[OuterRingEdge]/2."/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardDiskZPlus"/>
+            <rChild name="PixelForwardDiskOuterRingEdge"/>
+            <Translation x="0." y="0." z="[OuterRingHalfWidth]+[OuterRingEdge]/2."/>
+        </PosPart>
+        <!-- Z Minus Disk -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZMinus"/>
+            <rChild name="PixelForwardDiskInnerRing"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZMinus"/>
+            <rChild name="PixelForwardDiskInnerRingEdge"/>
+            <Translation x="0." y="0." z="-[InnerRingHalfWidth]-[InnerRingEdge]/2."/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardDiskZMinus"/>
+            <rChild name="PixelForwardDiskInnerRingEdge"/>
+            <Translation x="0." y="0." z="[InnerRingHalfWidth]+[InnerRingEdge]/2."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZMinus"/>
+            <rChild name="PixelForwardDiskOuterRing"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardDiskZMinus"/>
+            <rChild name="PixelForwardDiskOuterRingEdge"/>
+            <Translation x="0." y="0." z="-[OuterRingHalfWidth]-[OuterRingEdge]/2."/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardDiskZMinus"/>
+            <rChild name="PixelForwardDiskOuterRingEdge"/>
+            <Translation x="0." y="0." z="[OuterRingHalfWidth]+[OuterRingEdge]/2."/>
+        </PosPart>
+    </PosPartSection>
+    <!-- Blades -->
+    <!-- Z Plus Disk -->
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZPlus"/>
+        <Numeric name="Endcap" value="1."/>
+        <String name="Child" value="pixfwdBlade:PixelForwardBlade"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdBlade:AnchorY], 0. </Vector>
+    </Algorithm>
+    <!-- Z Minus Disk -->
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZMinus"/>
+        <Numeric name="Endcap" value="-1."/>
+        <String name="Child" value="pixfwdBlade:PixelForwardBlade"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdBlade:AnchorY], 0. </Vector>
+        <String name="ChildRotation" value="pixfwdCommon:ReflectionX"/>
+    </Algorithm>
+    <!-- Panels -->
+    <ConstantsSection label="Panels" eval="true">
+        <Constant name="zPanel" value="[pixfwdBlade:RootHalfThickness]+[pixfwdPanel:RootHalfThickness]"/>
+    </ConstantsSection>
+    <!-- Z Plus Disk -->
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZPlus"/>
+        <Numeric name="Endcap" value="1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel3Right"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], [zPanel] </Vector>
+        <String name="FlagString" value="RLLLLRLLLLLRRLLLLRLLLLLR"/>
+        <!-- Panel Layout ZPlus 3  -->
+        <String name="FlagSelector" value="R"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZPlus"/>
+        <Numeric name="Endcap" value="1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel3Left"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], [zPanel] </Vector>
+        <String name="FlagString" value="RLLLLRLLLLLRRLLLLRLLLLLR"/>
+        <!-- Panel Layout ZPlus 3  -->
+        <String name="FlagSelector" value="L"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZPlus"/>
+        <Numeric name="Endcap" value="1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel4Right"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], -[zPanel] </Vector>
+        <String name="ChildRotation" value="pixfwdCommon:Y180"/>
+        <String name="FlagString" value="LLLLLLRLLLLRLLLLLLRLLLLR"/>
+        <!-- Panel Layout ZPlus 4  -->
+        <String name="FlagSelector" value="R"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZPlus"/>
+        <Numeric name="Endcap" value="1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel4Left"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], -[zPanel] </Vector>
+        <String name="ChildRotation" value="pixfwdCommon:Y180"/>
+        <String name="FlagString" value="LLLLLLRLLLLRLLLLLLRLLLLR"/>
+        <!-- Panel Layout ZPlus 4  -->
+        <String name="FlagSelector" value="L"/>
+    </Algorithm>
+    <!-- Z Minus Disk -->
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZMinus"/>
+        <Numeric name="Endcap" value="-1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel3Right"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], [zPanel] </Vector>
+        <String name="FlagString" value="LRRRRRLRRRRLLRRRRRLRRRRL"/>
+        <!-- Panel Layout ZMinus 3  -->
+        <String name="FlagSelector" value="R"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZMinus"/>
+        <Numeric name="Endcap" value="-1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel3Left"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], [zPanel] </Vector>
+        <String name="FlagString" value="LRRRRRLRRRRLLRRRRRLRRRRL"/>
+        <!-- Panel Layout ZMinus 3  -->
+        <String name="FlagSelector" value="L"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZMinus"/>
+        <Numeric name="Endcap" value="-1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel4Right"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], -[zPanel] </Vector>
+        <String name="ChildRotation" value="pixfwdCommon:Y180"/>
+        <String name="FlagString" value="LRRRRLRRRRRRLRRRRLRRRRRR"/>
+        <!-- Panel Layout ZMinus 4  -->
+        <String name="FlagSelector" value="R"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZMinus"/>
+        <Numeric name="Endcap" value="-1."/>
+        <String name="Child" value="pixfwdPanel:PixelForwardPanel4Left"/>
+        <Vector name="ChildTranslation" type="numeric" nEntries="3"> 0., -[pixfwdPanel:AnchorY], -[zPanel] </Vector>
+        <String name="ChildRotation" value="pixfwdCommon:Y180"/>
+        <String name="FlagString" value="LRRRRLRRRRRRLRRRRLRRRRRR"/>
+        <!-- Panel Layout ZMinus 4  -->
+        <String name="FlagSelector" value="L"/>
+    </Algorithm>
+    <!-- Nipples -->
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZPlus"/>
+        <Numeric name="Endcap" value="1."/>
+        <String name="Child" value="pixfwdNipple:PixelForwardNippleZPlus"/>
+        <String name="FlagString" value="YYYYYNYYYYYNYYYYYNYYYYYN"/>
+        <String name="FlagSelector" value="Y"/>
+    </Algorithm>
+    <Algorithm name="track:DDPixFwdBlades">
+        <rParent name="pixfwdDisk:PixelForwardDiskZMinus"/>
+        <Numeric name="Endcap" value="-1."/>
+        <String name="Child" value="pixfwdNipple:PixelForwardNippleZMinus"/>
+        <String name="FlagString" value="NYYYYYNYYYYYNYYYYYNYYYYY"/>
+        <String name="FlagSelector" value="Y"/>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdMaterials.xml b/examples/DDCMS/data/pixfwdMaterials.xml
index b450254d8c7637f8acb78510c482fd10f22b69a7..6fee50e940a2d4e31d42e92879f890cd23422155 100644
--- a/examples/DDCMS/data/pixfwdMaterials.xml
+++ b/examples/DDCMS/data/pixfwdMaterials.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
-  <MaterialSection label="pixfwdMaterials.xml">
+  <MaterialSection label="PixelForwardMaterial.xml">
     <CompositeMaterial name="FPix_Alumina" density="3.96*g/cm3" method="mixture by weight" symbol=" ">
       <MaterialFraction fraction="0.52924272">
         <rMaterial name="trackermaterial:T_Aluminium" />
diff --git a/examples/DDCMS/data/pixfwdNipple.xml b/examples/DDCMS/data/pixfwdNipple.xml
new file mode 100644
index 0000000000000000000000000000000000000000..631e76ddab3e1c26cf27b64cdfa5fa1ff0d4dafc
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdNipple.xml
@@ -0,0 +1,377 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <!-- 
+       
+       == CMS Forward Pixels Geometry ==
+       
+       @version 3.02.01 May 30, 2006
+       @created Dmitry Onoprienko
+       @modified Vesna Cuplov april 2007
+       
+       == Subsystem or component described by the file ==
+       
+       "Nipple" connecting cooling channels in two adjacent blades.
+       
+       == Root volume and its reference frame ==
+       
+       Two root volumes are defined:
+       
+       PixelForwardNippleZPlus  (nipple for +Z disk)
+       PixelForwardNippleZMinus (nipple for -Z disk)
+       
+       Z along the nipple axis, pointing from J to K.
+       
+       Origin at the middle of a segment connecting points J and K on the drawing
+       
+       == Positioning ==
+       
+       Positioned automatically by the <code>DDPixFwdBlades</code> algorithm, which recognizes
+       this component by its volume name, and applies appropriate rotations and translations.
+       
+       == Additional comments ==
+       
+       +Z and -Z versions of a nipple are, in fact, reflections of each other, but they are defined
+       separately to make Iguana happy: G4 visualization cannot handle polycone reflection at the moment.
+       
+       The call to DDPixFwdBlades algorithm calculates parameters needed for constructing
+       the nipple: rotations pixfwdNipple:NippleToCoverZPlus, pixfwdNipple:NippleToCoverZMinus,
+       pixfwdNipple:NippleToBodyZPlus, pixfwdNipple:NippleToBodyZMinus 
+       and constants pixfwdNipple:JK, pixfwdNipple:AngleBody, pixfwdNipple:AngleCover.
+       
+       Currently, there is a problem with passing constants from algorithms to DDL files, so these constants
+       are defined manually (by copy-and-paste from the algorithm output). To make sure the resulting 
+       numerical error does not cause volumes to overlap, nipples are described to be slightly shorter
+       than they are on the drawings.
+       
+       -->
+  <!-- Input geometry parameters -->
+  <ConstantsSection label="Input" eval="true">
+    <Constant name="R01" value="2.00*mm"/>
+    <Constant name="R02" value="2.50*mm"/>
+    <Constant name="R03" value="2.00*mm"/>
+    <Constant name="R04" value="2.50*mm"/>
+    <Constant name="R05" value="3.00*mm"/>
+    <Constant name="R06" value="3.00*mm"/>
+    <Constant name="R07" value="3.50*mm"/>
+    <Constant name="R08" value="4.50*mm"/>
+    <Constant name="R09" value="3.25*mm"/>
+    <Constant name="R10" value="3.75*mm"/>
+    <Constant name="R11" value="3.50*mm"/>
+    <Constant name="L01" value="8.23*mm"/>
+    <Constant name="L02" value="8.23*mm"/>
+    <Constant name="L03" value="6.73*mm"/>
+    <Constant name="L04" value="9.50*mm"/>
+    <Constant name="L05" value="4.00*mm"/>
+    <Constant name="L06" value="4.00*mm"/>
+    <Constant name="L07" value="1.00*mm"/>
+    <Constant name="L08" value="1.00*mm"/>
+    <Constant name="A01" value="60*deg"/>
+    <Constant name="RootHalfThickness" value="[pixfwdPanelBase:RootHalfThickness]"/>
+  </ConstantsSection>
+  <!-- THIS ALGORITHM DEFINES A FEW ROTATIONS (LIKE  pixfwdNipple:NippleToCover) AND
+       ATTEMPTS TO DEFINE A CONSTANT pixfwdNipple: JK, AngleBody, AngleCover -->
+  <Algorithm name="track:DDPixFwdBlades">
+    <rParent name="pixfwdNipple:PixelForwardNippleZPlus"/>
+  </Algorithm>
+  <!-- Nipple root and a solid for boolean subtraction -->
+  <ConstantsSection label="Root" eval="true">
+    <Constant name="JK" value="16.9*mm"/>
+    <!-- 16.9523 as printed by algorithm, made slightly smaller
+         to avoid overlaps due to numerical errors. Can be made
+         more precise once DDL is able to use constants defined 
+         in algorithms directly. -->
+    <Constant name="AngleBody" value="0.172941*rad"/>
+    <Constant name="AngleCover" value="0.172941*rad"/>
+    <Constant name="Dsub" value="2.0*mm"/>
+    <Constant name="Rsub" value="[R08]/cos([AngleBody]) + ([Dsub]/2)*tan([AngleBody]) + [pixfwdCommon:SmallBool]"/>
+    <Constant name="DeltaBody" value="([Dsub]/2 - 0.5*mm) / cos([AngleBody])"/>
+    <Constant name="DeltaCover" value="([Dsub]/2 - 0.5*mm) / cos([AngleCover])"/>
+  </ConstantsSection>
+  <SolidSection label="Root">
+    <!-- Previous description (D. Onoprienko)    
+         <Tubs name="PixelForwardNipple_01" rMin="0.*mm" rMax="[R08]" dz="[JK]/2." startPhi="0." deltaPhi="360*deg" />
+         <Tubs name="PixelForwardNippleSubtract" rMin="0.*mm" rMax="[Rsub]" dz="[Dsub]/2." startPhi="0." deltaPhi="360*deg" /> 
+         <SubtractionSolid name="PixelForwardNipple_int01">
+         <rSolid name="PixelForwardNipple_01" />
+         <rSolid name="PixelForwardNippleSubtract" />
+         <Translation x="0." y="0." z="-[JK]/2.-[DeltaCover]" />
+         <rRotation name="NippleToCoverZPlus" />
+    </SubtractionSolid>
+         <SubtractionSolid name="PixelForwardNippleZPlus">
+         <rSolid name="PixelForwardNipple_int01" />
+         <rSolid name="PixelForwardNippleSubtract" />
+         <Translation x="0." y="0." z="[JK]/2.+[DeltaBody]" />
+         <rRotation name="NippleToBodyZPlus" />
+    </SubtractionSolid>
+         -->
+    <!-- New description (I used the description of D. Onoprienko as a basement) to fix overlaps of panels with nipples: Previously there was only one shape as a Tub with special angles for the extremities, but this shape was overlaping with panels. I had to split into 2 shapes: the first shape is like the previous Tub with special angles for extremities but with a smaller rMax and the second shape that I add is a basic Tub (no angles for the extremities) that covers the largest part of the nipple. -->
+    <Tubs name="PixelForwardNipple_01" rMin="0.*mm" rMax="[R08]-0.9*mm" dz="[L04]/2+3.7*mm" startPhi="0." deltaPhi="360*deg"/>
+    <Tubs name="PixelForwardNippleSubtract" rMin="0.*mm" rMax="[Rsub]-0.9*mm" dz="[Dsub]/2." startPhi="0." deltaPhi="360*deg"/>
+    <Tubs name="PixelForwardNippleMiddle" rMin="0.*mm" rMax="[R08]" dz="[L04]/2.+0.4*mm" startPhi="0." deltaPhi="360*deg"/>
+    <SubtractionSolid name="PixelForwardNipple_int01">
+      <rSolid name="PixelForwardNipple_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="-[L04]/2.-3.7*mm-[DeltaCover]"/>
+      <rRotation name="NippleToCoverZPlus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleZPlus_01">
+      <rSolid name="PixelForwardNipple_int01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="[L04]/2.+3.7*mm+[DeltaBody]"/>
+      <rRotation name="NippleToBodyZPlus"/>
+    </SubtractionSolid>
+    <UnionSolid name="PixelForwardNippleZPlus">
+      <rSolid name="PixelForwardNippleZPlus_01"/>
+      <rSolid name="PixelForwardNippleMiddle"/>
+      <Translation x="0." y="0." z="0."/>
+    </UnionSolid>
+    <SubtractionSolid name="PixelForwardNipple_int02">
+      <rSolid name="PixelForwardNipple_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="-[L04]/2.-3.7*mm-[DeltaCover]"/>
+      <rRotation name="NippleToCoverZMinus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleZMinus_01">
+      <rSolid name="PixelForwardNipple_int02"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="[L04]/2.+3.7*mm+[DeltaBody]"/>
+      <rRotation name="NippleToBodyZMinus"/>
+    </SubtractionSolid>
+    <UnionSolid name="PixelForwardNippleZMinus">
+      <rSolid name="PixelForwardNippleZMinus_01"/>
+      <rSolid name="PixelForwardNippleMiddle"/>
+      <Translation x="0." y="0." z="0."/>
+    </UnionSolid>
+  </SolidSection>
+  <LogicalPartSection label="Root">
+    <LogicalPart name="PixelForwardNippleZPlus" category="envelope">
+      <rSolid name="PixelForwardNippleZPlus"/>
+      <rMaterial name="materials:Air"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleZMinus" category="envelope">
+      <rSolid name="PixelForwardNippleZMinus"/>
+      <rMaterial name="materials:Air"/>
+    </LogicalPart>
+  </LogicalPartSection>
+  <!-- Sleeve and pipes inside it -->
+  <ConstantsSection label="Sleeve" eval="true">
+    <Constant name="e01" value="[JK]-[L01]-[L02]"/>
+  </ConstantsSection>
+  <SolidSection label="Sleeve">
+    <Polycone name="PixelForwardNippleSleeve" startPhi="0.*deg" deltaPhi="360*deg">
+      <ZSection z="-[L04]/2" rMin="0." rMax="[R08]"/>
+      <ZSection z="[L04]/2-([R08]-[R07])*tan([A01])" rMin="0." rMax="[R08]"/>
+      <ZSection z="[L04]/2" rMin="0." rMax="[R07]"/>
+    </Polycone>
+    <Polycone name="PixelForwardNippleEpoxyCover" startPhi="0.*deg" deltaPhi="360*deg">
+      <ZSection z="-[L06]/2" rMin="[R05]" rMax="[R11]"/>
+      <ZSection z="[L06]/2-[L07]-([R10]-[R11])" rMin="[R05]" rMax="[R11]"/>
+      <ZSection z="[L06]/2-[L07]" rMin="[R05]" rMax="[R10]"/>
+      <ZSection z="[L06]/2" rMin="[R05]" rMax="[R10]"/>
+    </Polycone>
+    <Polycone name="PixelForwardNippleEpoxyBody" startPhi="0.*deg" deltaPhi="360*deg">
+      <ZSection z="-[L05]/2" rMin="[R02]" rMax="[R09]"/>
+      <ZSection z="-[L05]/2+[L08]" rMin="[R02]" rMax="[R09]"/>
+      <ZSection z="-[L05]/2+[L08]+([R09]-[R06])" rMin="[R02]" rMax="[R06]"/>
+      <ZSection z="[L05]/2" rMin="[R02]" rMax="[R06]"/>
+    </Polycone>
+    <Polycone name="PixelForwardNippleSleeveCoolant" startPhi="0.*deg" deltaPhi="360*deg">
+      <ZSection z="-[L04]/2" rMin="0.0" rMax="[R04]"/>
+      <ZSection z="-[L04]/2+[L06]-([L02]-[L03])" rMin="0.0" rMax="[R04]"/>
+      <ZSection z="-[L04]/2+[L06]-([L02]-[L03])+([R04]-[R03])" rMin="0.0" rMax="[R03]"/>
+      <ZSection z="-[L04]/2+[L06]" rMin="0.0" rMax="[R03]"/>
+      <ZSection z="-[L04]/2+[L06]" rMin="0.0" rMax="[R02]"/>
+      <ZSection z="-[L04]/2+[L06]+[e01]" rMin="0.0" rMax="[R02]"/>
+      <ZSection z="-[L04]/2+[L06]+[e01]" rMin="0.0" rMax="[R01]"/>
+      <ZSection z="[L04]/2" rMin="0.0" rMax="[R01]"/>
+    </Polycone>
+  </SolidSection>
+  <LogicalPartSection label="Sleeve">
+    <LogicalPart name="PixelForwardNippleSleeve" category="cooling">
+      <rSolid name="PixelForwardNippleSleeve"/>
+      <rMaterial name="trackermaterial:T_Aluminium"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleEpoxyCover" category="cooling">
+      <rSolid name="PixelForwardNippleEpoxyCover"/>
+      <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleEpoxyBody" category="cooling">
+      <rSolid name="PixelForwardNippleEpoxyBody"/>
+      <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleSleeveCoolant" category="cooling">
+      <rSolid name="PixelForwardNippleSleeveCoolant"/>
+      <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+    </LogicalPart>
+  </LogicalPartSection>
+  <PosPartSection label="Sleeve">
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleZPlus"/>
+      <rChild name="PixelForwardNippleSleeve"/>
+      <Translation x="0." y="0." z="-[JK]/2 + [L02] - [L06] + [L04]/2"/>
+    </PosPart>
+    <PosPart copyNumber="2">
+      <rParent name="PixelForwardNippleZMinus"/>
+      <rChild name="PixelForwardNippleSleeve"/>
+      <Translation x="0." y="0." z="-[JK]/2 + [L02] - [L06] + [L04]/2"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleSleeve"/>
+      <rChild name="PixelForwardNippleEpoxyCover"/>
+      <Translation x="0." y="0." z="-[L04]/2 + [L06]/2"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleSleeve"/>
+      <rChild name="PixelForwardNippleEpoxyBody"/>
+      <Translation x="0." y="0." z="[L04]/2 - [L05]/2"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleSleeve"/>
+      <rChild name="PixelForwardNippleSleeveCoolant"/>
+    </PosPart>
+  </PosPartSection>
+  <!-- Cover side : -->
+  <ConstantsSection label="Cover" eval="true">
+    <Constant name="e02" value="([L02]-[L06])/2"/>
+    <!-- Half length of cover side -->
+  </ConstantsSection>
+  <SolidSection label="Cover">
+    <Tubs name="PixelForwardNippleCover_01" rMin="0.*mm" rMax="[R05]" dz="[e02]" startPhi="0." deltaPhi="360*deg"/>
+    <Tubs name="PixelForwardNippleCoverCoolant_01" rMin="0.*mm" rMax="[R04]" dz="[e02]" startPhi="0." deltaPhi="360*deg"/>
+    <SubtractionSolid name="PixelForwardNippleCoverZPlus">
+      <rSolid name="PixelForwardNippleCover_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="-[e02]-[DeltaCover]"/>
+      <rRotation name="NippleToCoverZPlus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleCoverCoolantZPlus">
+      <rSolid name="PixelForwardNippleCoverCoolant_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="-[e02]-[DeltaCover]"/>
+      <rRotation name="NippleToCoverZPlus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleCoverZMinus">
+      <rSolid name="PixelForwardNippleCover_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="-[e02]-[DeltaCover]"/>
+      <rRotation name="NippleToCoverZMinus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleCoverCoolantZMinus">
+      <rSolid name="PixelForwardNippleCoverCoolant_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="-[e02]-[DeltaCover]"/>
+      <rRotation name="NippleToCoverZMinus"/>
+    </SubtractionSolid>
+  </SolidSection>
+  <LogicalPartSection label="Cover">
+    <LogicalPart name="PixelForwardNippleCoverZPlus" category="cooling">
+      <rSolid name="PixelForwardNippleCoverZPlus"/>
+      <rMaterial name="trackermaterial:T_Aluminium"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleCoverCoolantZPlus" category="cooling">
+      <rSolid name="PixelForwardNippleCoverCoolantZPlus"/>
+      <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleCoverZMinus" category="cooling">
+      <rSolid name="PixelForwardNippleCoverZMinus"/>
+      <rMaterial name="trackermaterial:T_Aluminium"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleCoverCoolantZMinus" category="cooling">
+      <rSolid name="PixelForwardNippleCoverCoolantZMinus"/>
+      <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+    </LogicalPart>
+  </LogicalPartSection>
+  <PosPartSection label="Cover">
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleZPlus"/>
+      <rChild name="PixelForwardNippleCoverZPlus"/>
+      <Translation x="0." y="0." z="-[JK]/2 + [e02]"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleCoverZPlus"/>
+      <rChild name="PixelForwardNippleCoverCoolantZPlus"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleZMinus"/>
+      <rChild name="PixelForwardNippleCoverZMinus"/>
+      <Translation x="0." y="0." z="-[JK]/2 + [e02]"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleCoverZMinus"/>
+      <rChild name="PixelForwardNippleCoverCoolantZMinus"/>
+    </PosPart>
+  </PosPartSection>
+  <!-- Body side : -->
+  <ConstantsSection label="Body" eval="true">
+    <Constant name="e03" value="([JK]-[e02]*2-[L04])/2"/>
+    <!--Half length of body side -->
+  </ConstantsSection>
+  <SolidSection label="Body">
+    <Tubs name="PixelForwardNippleBody_01" rMin="0.*mm" rMax="[R02]" dz="[e03]" startPhi="0." deltaPhi="360*deg"/>
+    <Tubs name="PixelForwardNippleBodyCoolant_01" rMin="0.*mm" rMax="[R01]" dz="[e03]" startPhi="0." deltaPhi="360*deg"/>
+    <SubtractionSolid name="PixelForwardNippleBodyZPlus">
+      <rSolid name="PixelForwardNippleBody_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="[e03]+[DeltaBody]"/>
+      <rRotation name="NippleToBodyZPlus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleBodyCoolantZPlus">
+      <rSolid name="PixelForwardNippleBodyCoolant_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="[e03]+[DeltaBody]"/>
+      <rRotation name="NippleToBodyZPlus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleBodyZMinus">
+      <rSolid name="PixelForwardNippleBody_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="[e03]+[DeltaBody]"/>
+      <rRotation name="NippleToBodyZMinus"/>
+    </SubtractionSolid>
+    <SubtractionSolid name="PixelForwardNippleBodyCoolantZMinus">
+      <rSolid name="PixelForwardNippleBodyCoolant_01"/>
+      <rSolid name="PixelForwardNippleSubtract"/>
+      <Translation x="0." y="0." z="[e03]+[DeltaBody]"/>
+      <rRotation name="NippleToBodyZMinus"/>
+    </SubtractionSolid>
+  </SolidSection>
+  <LogicalPartSection label="Body">
+    <LogicalPart name="PixelForwardNippleBodyZPlus" category="cooling">
+      <rSolid name="PixelForwardNippleBodyZPlus"/>
+      <rMaterial name="trackermaterial:T_Aluminium"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleBodyCoolantZPlus" category="cooling">
+      <rSolid name="PixelForwardNippleBodyCoolantZPlus"/>
+      <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleBodyZMinus" category="cooling">
+      <rSolid name="PixelForwardNippleBodyZMinus"/>
+      <rMaterial name="trackermaterial:T_Aluminium"/>
+    </LogicalPart>
+    <LogicalPart name="PixelForwardNippleBodyCoolantZMinus" category="cooling">
+      <rSolid name="PixelForwardNippleBodyCoolantZMinus"/>
+      <rMaterial name="pixfwdMaterials:PixelForwardCoolant"/>
+    </LogicalPart>
+  </LogicalPartSection>
+  <PosPartSection label="BodyPlus">
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleZPlus"/>
+      <rChild name="PixelForwardNippleBodyZPlus"/>
+      <Translation x="0." y="0." z="[JK]/2 - [e03]"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleBodyZPlus"/>
+      <rChild name="PixelForwardNippleBodyCoolantZPlus"/>
+    </PosPart>
+  </PosPartSection>
+  <PosPartSection label="BodyMinus">
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleZMinus"/>
+      <rChild name="PixelForwardNippleBodyZMinus"/>
+      <Translation x="0." y="0." z="[JK]/2 - [e03]"/>
+    </PosPart>
+    <PosPart copyNumber="1">
+      <rParent name="PixelForwardNippleBodyZMinus"/>
+      <rChild name="PixelForwardNippleBodyCoolantZMinus"/>
+    </PosPart>
+  </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPanel.xml b/examples/DDCMS/data/pixfwdPanel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ff4bff909c238ab3bc3688cb9cfc1c22f92163b
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPanel.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         @modified Vesna Cuplov (to Fix overlaps 04.17.07)
+         
+         == Subsystem or component described by the file ==
+         
+         A panel that includes a base and three or four sensor plaquettes mounted on it.
+         Every blade will have two such panels, one on each side.
+         
+         == Root volume and its reference frame ==
+         
+         Four types of panels are defined :
+         
+         PixelForwardPanel3Right - right 3-plaquette panel (3RX on the drawings)
+         PixelForwardPanel3Left  - left 3-plaquette panel (3LX on the drawings)
+         PixelForwardPanel4Right - right 4-plaquette panel (4RX on the drawings)
+         PixelForwardPanel4Left  - left 3-plaquette panel (4LX on the drawings)
+         
+         Y is along the axis of the panel, points from narrow to wide end.
+         X is in the plane of the panel, ear is on X-positive side for "right" panels.
+         Z is perpendicular to the plane of the panel, points to plaquettes side.
+         
+         == Positioning ==
+         
+         The file defines AnchorX, AnchorY, and AnchorZ 
+         constants that describe the coordinates of the anchor point in the panel 
+         root volume (PixelForwardPanelXXX) reference frame.
+         Currently, [AnchorX] = [AnchorZ] = 0.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <!-- Y-coordinates of active centers of sensors with respect to ancor point ((0.,0.) on the drawing) -->
+        <Constant name="ACp3y1" value="19.469*mm"/>
+        <Constant name="ACp3y2" value="48.777*mm"/>
+        <Constant name="ACp3y3" value="78.091*mm"/>
+        <Constant name="ACp4y1" value="7.664*mm"/>
+        <Constant name="ACp4y2" value="32.394*mm"/>
+        <Constant name="ACp4y3" value="61.128*mm"/>
+        <Constant name="ACp4y4" value="85.869*mm"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="RootHalfWidth" value="[pixfwdPanelBase:RootHalfWidth]"/>
+        <Constant name="RootHalfLength" value="[pixfwdPanelBase:RootHalfLength]"/>
+        <Constant name="RootHalfThickness" value="[pixfwdPlaq:PlaquetteT]/2.+[pixfwdPanelBase:RootHalfThickness]"/>
+        <Constant name="zPanel" value="-[pixfwdPlaq:PlaquetteT]/2."/>
+        <Constant name="zPlaquette" value="[pixfwdPanelBase:RootHalfThickness]"/>
+        <!-- Coordinates of the ancor point ((0.,0.) on the drawing) in the Root (PixelForwardPanel<ХХХ>) frame -->
+        <Constant name="AnchorX" value="0.*mm"/>
+        <Constant name="AnchorY" value="[pixfwdPanelBase:AnchorY]"/>
+        <Constant name="AnchorZ" value="0.*mm"/>
+        <Constant name="EarWidth" value="[pixfwdPanelBase:EarWidth]"/>
+        <Constant name="EarLength" value="[pixfwdPanelBase:EarLength]"/>
+        <Constant name="MainHalfWidthBottom" value="[pixfwdPanelBase:MainHalfWidthBottom]"/>
+        <Constant name="MainHalfWidthTop" value="[pixfwdPanelBase:MainHalfWidthTop]"/>
+        <Constant name="PanelAngle" value="[pixfwdPanelBase:PanelAngle]"/>
+        <Constant name="MainLength" value="[pixfwdPanelBase:]MainLength"/>
+        <Constant name="NoseLength" value="[pixfwdPanelBase:]NoseLength"/>
+    </ConstantsSection>
+    <!-- Root volumes for 4 types panels -->
+    <!-- previous description (D. Onoprienko)
+         <SolidSection label="Root">
+         <Box name="PixelForwardPanel" dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[RootHalfThickness]" />
+    </SolidSection>
+         -->
+    <!-- New description (april 2007): As for the PanelBase, I used a trapezoid for the main panel volume and a second trapezoid for the part made of the ear -->
+    <SolidSection label="Root">
+        <Trapezoid name="PixelForwardPanelMain" dz="[RootHalfThickness]" bl1="[MainHalfWidthBottom]+4.0*mm" bl2="[MainHalfWidthBottom]+4.0*mm" tl1="[MainHalfWidthTop]+4.0*mm" tl2="[MainHalfWidthTop]+4.0*mm" h1="[MainLength]/2.+[NoseLength]/2." h2="[MainLength]/2.+[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelEar" dz="[RootHalfThickness]" bl1="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" bl2="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" tl1="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" tl2="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" h1="[EarLength]/2.+3.0*mm" h2="[EarLength]/2.+3.0*mm" alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanel">
+            <rSolid name="PixelForwardPanelMain"/>
+            <rSolid name="PixelForwardPanelEar"/>
+            <Translation x="0." y="29.0" z="0."/>
+        </UnionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Root">
+        <LogicalPart name="PixelForwardPanel3Right" category="envelope">
+            <rSolid name="PixelForwardPanel"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanel3Left" category="envelope">
+            <rSolid name="PixelForwardPanel"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanel4Right" category="envelope">
+            <rSolid name="PixelForwardPanel"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanel4Left" category="envelope">
+            <rSolid name="PixelForwardPanel"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Root">
+        <!-- Panel 3 Right -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Right"/>
+            <rChild name="pixfwdPanelBase:PixelForwardPanelBase"/>
+            <Translation x="0." y="0." z="[zPanel]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Right"/>
+            <rChild name="pixfwdPlaq2x3:PixelForwardPlaquette2x3Up"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq2x3:AnchorX]" y="[AnchorY]+[ACp3y1]-[pixfwdPlaq2x3:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Right"/>
+            <rChild name="pixfwdPlaq2x4:PixelForwardPlaquette2x4Up"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq2x4:AnchorX]" y="[AnchorY]+[ACp3y2]-[pixfwdPlaq2x4:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Right"/>
+            <rChild name="pixfwdPlaq2x5:PixelForwardPlaquette2x5Up"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq2x5:AnchorX]" y="[AnchorY]+[ACp3y3]-[pixfwdPlaq2x5:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <!-- Panel 3 Left -->
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPanel3Left"/>
+            <rChild name="pixfwdPanelBase:PixelForwardPanelBase"/>
+            <Translation x="0." y="0." z="[zPanel]"/>
+            <rReflectionRotation name="pixfwdCommon:ReflectionX"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Left"/>
+            <rChild name="pixfwdPlaq2x3:PixelForwardPlaquette2x3Down"/>
+            <Translation x="[AnchorX]+[pixfwdPlaq2x3:AnchorX]" y="[AnchorY]+[ACp3y1]+[pixfwdPlaq2x3:AnchorY]" z="[zPlaquette]"/>
+            <rRotation name="pixfwdCommon:Z180"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Left"/>
+            <rChild name="pixfwdPlaq2x4:PixelForwardPlaquette2x4Down"/>
+            <Translation x="[AnchorX]+[pixfwdPlaq2x4:AnchorX]" y="[AnchorY]+[ACp3y2]+[pixfwdPlaq2x4:AnchorY]" z="[zPlaquette]"/>
+            <rRotation name="pixfwdCommon:Z180"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel3Left"/>
+            <rChild name="pixfwdPlaq2x5:PixelForwardPlaquette2x5Down"/>
+            <Translation x="[AnchorX]+[pixfwdPlaq2x5:AnchorX]" y="[AnchorY]+[ACp3y3]+[pixfwdPlaq2x5:AnchorY]" z="[zPlaquette]"/>
+            <rRotation name="pixfwdCommon:Z180"/>
+        </PosPart>
+        <!-- Panel 4 Right -->
+        <PosPart copyNumber="3">
+            <rParent name="PixelForwardPanel4Right"/>
+            <rChild name="pixfwdPanelBase:PixelForwardPanelBase"/>
+            <Translation x="0." y="0." z="[zPanel]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel4Right"/>
+            <rChild name="pixfwdPlaq1x2:PixelForwardPlaquette1x2Right"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq1x2:AnchorXRight]" y="[AnchorY]+[ACp4y1]-[pixfwdPlaq1x2:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPanel4Right"/>
+            <rChild name="pixfwdPlaq2x3:PixelForwardPlaquette2x3Down"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq2x3:AnchorX]" y="[AnchorY]+[ACp4y2]-[pixfwdPlaq2x3:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPanel4Right"/>
+            <rChild name="pixfwdPlaq2x4:PixelForwardPlaquette2x4Down"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq2x4:AnchorX]" y="[AnchorY]+[ACp4y3]-[pixfwdPlaq2x4:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel4Right"/>
+            <rChild name="pixfwdPlaq1x5:PixelForwardPlaquette1x5Left"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq1x5:AnchorXLeft]" y="[AnchorY]+[ACp4y4]-[pixfwdPlaq1x5:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <!-- Panel 4 Left -->
+        <PosPart copyNumber="4">
+            <rParent name="PixelForwardPanel4Left"/>
+            <rChild name="pixfwdPanelBase:PixelForwardPanelBase"/>
+            <Translation x="0." y="0." z="[zPanel]"/>
+            <rReflectionRotation name="pixfwdCommon:ReflectionX"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel4Left"/>
+            <rChild name="pixfwdPlaq1x2:PixelForwardPlaquette1x2Left"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq1x2:AnchorXLeft]" y="[AnchorY]+[ACp4y1]-[pixfwdPlaq1x2:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPanel4Left"/>
+            <rChild name="pixfwdPlaq2x3:PixelForwardPlaquette2x3Up"/>
+            <Translation x="[AnchorX]+[pixfwdPlaq2x3:AnchorX]" y="[AnchorY]+[ACp4y2]+[pixfwdPlaq2x3:AnchorY]" z="[zPlaquette]"/>
+            <rRotation name="pixfwdCommon:Z180"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPanel4Left"/>
+            <rChild name="pixfwdPlaq2x4:PixelForwardPlaquette2x4Up"/>
+            <Translation x="[AnchorX]+[pixfwdPlaq2x4:AnchorX]" y="[AnchorY]+[ACp4y3]+[pixfwdPlaq2x4:AnchorY]" z="[zPlaquette]"/>
+            <rRotation name="pixfwdCommon:Z180"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanel4Left"/>
+            <rChild name="pixfwdPlaq1x5:PixelForwardPlaquette1x5Right"/>
+            <Translation x="[AnchorX]-[pixfwdPlaq1x5:AnchorXRight]" y="[AnchorY]+[ACp4y4]-[pixfwdPlaq1x5:AnchorY]" z="[zPlaquette]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPanelBase.xml b/examples/DDCMS/data/pixfwdPanelBase.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f57291ff5c0c135c35d12e057fd42873aafa1216
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPanelBase.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Victoria Martin
+         @modified Dmitry Onoprienko
+         @modified Vesna Cuplov (fixing overlaps in panels 04.17.07)
+         
+         == Subsystem or component described by the file ==
+         
+         Beryllium panel with HDI (no plaquettes).
+         
+         == Root volume and its reference frame ==
+         
+         Root volume : PixelForwardPanelBase
+         
+         Y is along the axis of the panel, points from narrow to wide end
+         X is in the plane of the panel, ear is on X-positive side
+         Z is perpendicular to the panel, points to VHDI side.
+         
+         == Positioning ==
+         
+         The file defines AnchorX, AnchorY, and AnchorZ
+         constants that describe the coordinates of the anchor point in the panel base
+         root volume (PixelForwardPanelBase) reference frame.
+         Currently, [AnchorX] = [AnchorZ] = 0.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <!-- These constants are taken from the design drawings of 3-R Panel dated 14 Oct 05
+             X and Y here correspond to Y and -X on the drawing -->
+        <Constant name="Y1" value="-1.500*mm"/>
+        <Constant name="Y2" value="3.071*mm"/>
+        <Constant name="Y3" value="4.196*mm"/>
+        <Constant name="Y4" value="55.452*mm"/>
+        <Constant name="Y5" value="62.390*mm"/>
+        <Constant name="Y6" value="62.420*mm"/>
+        <Constant name="Y7" value="87.440*mm"/>
+        <Constant name="Y8" value="86.713*mm"/>
+        <Constant name="Y9" value="92.417*mm"/>
+        <Constant name="Y10" value="94.500*mm"/>
+        <Constant name="Y11" value="96.250*mm"/>
+        <Constant name="Y12" value="102.000*mm"/>
+        <Constant name="X1" value="-26.293*mm"/>
+        <Constant name="X2" value="-23.000*mm"/>
+        <Constant name="X3" value="-15.059*mm"/>
+        <Constant name="X4" value="2.500*mm"/>
+        <Constant name="X5" value="7.500*mm"/>
+        <Constant name="X6" value="10.095*mm"/>
+        <Constant name="X7" value="10.895*mm"/>
+        <Constant name="X8" value="18.150*mm"/>
+        <Constant name="X9" value="26.100*mm"/>
+        <Constant name="X10" value="34.376*mm"/>
+        <Constant name="BeThickness" value="0.508*mm"/>
+        <Constant name="HDIThickness" value="0.191*mm"/>
+        <Constant name="FilmThickness" value="0.051*mm"/>
+        <Constant name="TanPanelAngle" value="([X3]-[X1])/([Y8]-[Y2])"/>
+        <Constant name="PanelAngle" value="atan([TanPanelAngle])"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="RootHalfThickness" value="([BeThickness]+[HDIThickness]+[FilmThickness])/2."/>
+        <Constant name="RootHalfLength" value="([Y9]-[Y1])/2."/>
+        <Constant name="RootHalfWidth" value="[X10]"/>
+        <!-- Coordinates of the anchor point ((0.,0.) on the drawing) in the Root (PixelForwardPanelBase) frame -->
+        <Constant name="AnchorX" value="0.*mm"/>
+        <Constant name="AnchorY" value="-[RootHalfLength]-[Y1]"/>
+        <Constant name="AnchorZ" value="0.*mm"/>
+        <!-- Z-positions of layers -->
+        <Constant name="zBe" value="-([HDIThickness]+[FilmThickness])/2."/>
+        <Constant name="zFilm" value="([BeThickness]-[HDIThickness])/2."/>
+        <Constant name="zHDI" value="([BeThickness]+[FilmThickness])/2."/>
+        <Constant name="EarWidth" value="[X10]+[X3]-([Y7]-[Y2])*[TanPanelAngle]"/>
+        <Constant name="EarLength" value="[Y7]-[Y6]"/>
+    </ConstantsSection>
+    <!-- Root volume for the panel and its layers (Be, Film, HDI) -->
+    <!--previous description (D. Onoprienko)
+         <SolidSection label="Root">
+         <Box name="PixelForwardPanelBase" dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[RootHalfThickness]" />
+         <Box name="PixelForwardPanelBaseBe"   dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[BeThickness]/2." />
+         <Box name="PixelForwardPanelBaseFilm" dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[FilmThickness]/2." />
+         <Box name="PixelForwardPanelBaseHDI"  dx="[RootHalfWidth]" dy="[RootHalfLength]" dz="[HDIThickness]/2." />
+    </SolidSection>
+         -->
+    <!-- New Description (april 2007): I used a Trapezoid for the main part of the panel and added a trapezoid for the part made of the panel ear -->
+    <SolidSection label="Root">
+        <Trapezoid name="PixelForwardPanelBaseMain" dz="[RootHalfThickness]" bl1="[MainHalfWidthBottom]+4.0*mm" bl2="[MainHalfWidthBottom]+4.0*mm" tl1="[MainHalfWidthTop]+4.0*mm" tl2="[MainHalfWidthTop]+4.0*mm" h1="[MainLength]/2.+[NoseLength]/2." h2="[MainLength]/2.+[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseEar" dz="[RootHalfThickness]" bl1="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" bl2="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" tl1="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" tl2="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" h1="[EarLength]/2.+3.0*mm" h2="[EarLength]/2.+3.0*mm" alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBase">
+            <rSolid name="PixelForwardPanelBaseMain"/>
+            <rSolid name="PixelForwardPanelBaseEar"/>
+            <Translation x="0." y="29.0" z="0."/>
+        </UnionSolid>
+        <Trapezoid name="PixelForwardPanelBaseBeMain" dz="[BeThickness]/2." bl1="[MainHalfWidthBottom]+4.0*mm" bl2="[MainHalfWidthBottom]+4.0*mm" tl1="[MainHalfWidthTop]+4.0*mm" tl2="[MainHalfWidthTop]+4.0*mm" h1="[MainLength]/2.+[NoseLength]/2." h2="[MainLength]/2.+[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseBeEar" dz="[BeThickness]/2." bl1="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" bl2="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" tl1="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" tl2="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" h1="[EarLength]/2.+3.0*mm" h2="[EarLength]/2.+3.0*mm" alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBaseBe">
+            <rSolid name="PixelForwardPanelBaseBeMain"/>
+            <rSolid name="PixelForwardPanelBaseBeEar"/>
+            <Translation x="0." y="29.0" z="0."/>
+        </UnionSolid>
+        <Trapezoid name="PixelForwardPanelBaseFilmMain" dz="[FilmThickness]/2." bl1="[MainHalfWidthBottom]+4.0*mm" bl2="[MainHalfWidthBottom]+4.0*mm" tl1="[MainHalfWidthTop]+4.0*mm" tl2="[MainHalfWidthTop]+4.0*mm" h1="[MainLength]/2.+[NoseLength]/2." h2="[MainLength]/2.+[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseFilmEar" dz="[FilmThickness]/2." bl1="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" bl2="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" tl1="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" tl2="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" h1="[EarLength]/2.+3.0*mm" h2="[EarLength]/2.+3.0*mm" alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBaseFilm">
+            <rSolid name="PixelForwardPanelBaseFilmMain"/>
+            <rSolid name="PixelForwardPanelBaseFilmEar"/>
+            <Translation x="0." y="29.0" z="0."/>
+        </UnionSolid>
+        <Trapezoid name="PixelForwardPanelBaseHDIMain" dz="[HDIThickness]/2." bl1="[MainHalfWidthBottom]+4.0*mm" bl2="[MainHalfWidthBottom]+4.0*mm" tl1="[MainHalfWidthTop]+4.0*mm" tl2="[MainHalfWidthTop]+4.0*mm" h1="[MainLength]/2.+[NoseLength]/2." h2="[MainLength]/2.+[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseHDIEar" dz="[HDIThickness]/2." bl1="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" bl2="[MainHalfWidthBottom]+[EarWidth]/2.+12.0*mm" tl1="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" tl2="[MainHalfWidthTop]+[EarWidth]/2.+4.0*mm" h1="[EarLength]/2.+3.0*mm" h2="[EarLength]/2.+3.0*mm" alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBaseHDI">
+            <rSolid name="PixelForwardPanelBaseHDIMain"/>
+            <rSolid name="PixelForwardPanelBaseHDIEar"/>
+            <Translation x="0." y="29.0" z="0."/>
+        </UnionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Root">
+        <LogicalPart name="PixelForwardPanelBase" category="envelope">
+            <rSolid name="PixelForwardPanelBase"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseBe" category="envelope">
+            <rSolid name="PixelForwardPanelBaseBe"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseFilm" category="envelope">
+            <rSolid name="PixelForwardPanelBaseFilm"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseHDI" category="envelope">
+            <rSolid name="PixelForwardPanelBaseHDI"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Root">
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBase"/>
+            <rChild name="PixelForwardPanelBaseBe"/>
+            <Translation x="0." y="0." z="[zBe]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBase"/>
+            <rChild name="PixelForwardPanelBaseFilm"/>
+            <Translation x="0." y="0." z="[zFilm]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBase"/>
+            <rChild name="PixelForwardPanelBaseHDI"/>
+            <Translation x="0." y="0." z="[zHDI]"/>
+        </PosPart>
+    </PosPartSection>
+    <ConstantsSection label="Parts" eval="true">
+        <!-- Shapes -->
+        <Constant name="TanNoseAngle" value="([Y3]-[Y1])/([X8]-[X4])"/>
+        <Constant name="NoseAngle" value="atan([TanNoseAngle])"/>
+        <Constant name="MainLength" value="([Y9]-[Y2])"/>
+        <Constant name="MainHalfWidthBottom" value="-[X3]"/>
+        <Constant name="MainHalfWidthTop" value="-[X3]+[MainLength]*[TanPanelAngle]"/>
+        <Constant name="NoseLength" value="([Y2]-[Y1])"/>
+        <Constant name="NoseHalfWidthBottom" value="[X4]"/>
+        <Constant name="NoseHalfWidthTop" value="-[X3]"/>
+        <Constant name="ExtentionWidth" value="[X8]+[X3]-([Y3]-[Y2])*[TanPanelAngle]"/>
+        <Constant name="ExtentionHeight" value="[ExtentionWidth]*cos([PanelAngle])"/>
+        <Constant name="ExtentionSide" value="([Y6]-[Y2])/cos([PanelAngle])"/>
+        <!-- Positioning -->
+        <Constant name="earY" value="[Y6]+[EarLength]/2."/>
+        <Constant name="earX" value="-[X3]+([earY]-[Y2])*[TanPanelAngle]+[EarWidth]/2."/>
+        <Constant name="extentionX" value="(-[EarWidth]-([Y7]-[Y2])*[TanPanelAngle]+([X8]+[X3]))/2."/>
+        <Constant name="extentionY" value="(-[Y7]+[Y3])/2."/>
+    </ConstantsSection>
+    <RotationSection label="Parts">
+        <Rotation name="ExtentionRot" phiX="90.*deg-[PanelAngle]" thetaX="90.*deg" phiY="180.*deg-[PanelAngle]" thetaY="90.*deg" phiZ="0." thetaZ="0."/>
+    </RotationSection>
+    <SolidSection label="Parts">
+        <!-- Beryllium -->
+        <Trapezoid name="PixelForwardPanelBaseMainBe" dz="[BeThickness]/2." bl1="[MainHalfWidthBottom]" bl2="[MainHalfWidthBottom]" tl1="[MainHalfWidthTop]" tl2="[MainHalfWidthTop]" h1="[MainLength]/2." h2="[MainLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseNoseBe" dz="[BeThickness]/2." bl1="[NoseHalfWidthBottom]" bl2="[NoseHalfWidthBottom]" tl1="[NoseHalfWidthTop]" tl2="[NoseHalfWidthTop]" h1="[NoseLength]/2." h2="[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseEarBe_01" dz="[BeThickness]/2." bl1="[EarWidth]/2." bl2="[EarWidth]/2." tl1="[EarWidth]/2." tl2="[EarWidth]/2." h1="[EarLength]/2." h2="[EarLength]/2." alp1="[PanelAngle]" alp2="[PanelAngle]" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseExtentionBe" dz="[BeThickness]/2." bl1="[ExtentionSide]/2." bl2="[ExtentionSide]/2." tl1="[ExtentionSide]/2." tl2="[ExtentionSide]/2." h1="[ExtentionHeight]/2." h2="[ExtentionHeight]/2." alp1="-[NoseAngle]" alp2="-[NoseAngle]" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBaseEarBe">
+            <rSolid name="PixelForwardPanelBaseEarBe_01"/>
+            <rSolid name="PixelForwardPanelBaseExtentionBe"/>
+            <Translation x="[extentionX]" y="[extentionY]" z="0."/>
+            <rRotation name="ExtentionRot"/>
+        </UnionSolid>
+        <!-- Film -->
+        <Trapezoid name="PixelForwardPanelBaseMainFilm" dz="[FilmThickness]/2." bl1="[MainHalfWidthBottom]" bl2="[MainHalfWidthBottom]" tl1="[MainHalfWidthTop]" tl2="[MainHalfWidthTop]" h1="[MainLength]/2." h2="[MainLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseNoseFilm" dz="[FilmThickness]/2." bl1="[NoseHalfWidthBottom]" bl2="[NoseHalfWidthBottom]" tl1="[NoseHalfWidthTop]" tl2="[NoseHalfWidthTop]" h1="[NoseLength]/2." h2="[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseEarFilm_01" dz="[FilmThickness]/2." bl1="[EarWidth]/2." bl2="[EarWidth]/2." tl1="[EarWidth]/2." tl2="[EarWidth]/2." h1="[EarLength]/2." h2="[EarLength]/2." alp1="[PanelAngle]" alp2="[PanelAngle]" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseExtentionFilm" dz="[FilmThickness]/2." bl1="[ExtentionSide]/2." bl2="[ExtentionSide]/2." tl1="[ExtentionSide]/2." tl2="[ExtentionSide]/2." h1="[ExtentionHeight]/2." h2="[ExtentionHeight]/2." alp1="-[NoseAngle]" alp2="-[NoseAngle]" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBaseEarFilm">
+            <rSolid name="PixelForwardPanelBaseEarFilm_01"/>
+            <rSolid name="PixelForwardPanelBaseExtentionFilm"/>
+            <Translation x="[extentionX]" y="[extentionY]" z="0."/>
+            <rRotation name="ExtentionRot"/>
+        </UnionSolid>
+        <!-- HDI -->
+        <Trapezoid name="PixelForwardPanelBaseMainHDI" dz="[HDIThickness]/2." bl1="[MainHalfWidthBottom]" bl2="[MainHalfWidthBottom]" tl1="[MainHalfWidthTop]" tl2="[MainHalfWidthTop]" h1="[MainLength]/2." h2="[MainLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseNoseHDI" dz="[HDIThickness]/2." bl1="[NoseHalfWidthBottom]" bl2="[NoseHalfWidthBottom]" tl1="[NoseHalfWidthTop]" tl2="[NoseHalfWidthTop]" h1="[NoseLength]/2." h2="[NoseLength]/2." alp1="0.0" alp2="0.0" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseEarHDI_01" dz="[HDIThickness]/2." bl1="[EarWidth]/2." bl2="[EarWidth]/2." tl1="[EarWidth]/2." tl2="[EarWidth]/2." h1="[EarLength]/2." h2="[EarLength]/2." alp1="[PanelAngle]" alp2="[PanelAngle]" phi="90*deg"/>
+        <Trapezoid name="PixelForwardPanelBaseExtentionHDI" dz="[HDIThickness]/2." bl1="[ExtentionSide]/2." bl2="[ExtentionSide]/2." tl1="[ExtentionSide]/2." tl2="[ExtentionSide]/2." h1="[ExtentionHeight]/2." h2="[ExtentionHeight]/2." alp1="-[NoseAngle]" alp2="-[NoseAngle]" phi="90*deg"/>
+        <UnionSolid name="PixelForwardPanelBaseEarHDI">
+            <rSolid name="PixelForwardPanelBaseEarHDI_01"/>
+            <rSolid name="PixelForwardPanelBaseExtentionHDI"/>
+            <Translation x="[extentionX]" y="[extentionY]" z="0."/>
+            <rRotation name="ExtentionRot"/>
+        </UnionSolid>
+    </SolidSection>
+    <LogicalPartSection label="Parts">
+        <!-- Beryllium -->
+        <LogicalPart name="PixelForwardPanelBaseMainBe" category="support">
+            <rSolid name="PixelForwardPanelBaseMainBe"/>
+            <rMaterial name="trackermaterial:T_Beryllium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseNoseBe" category="support">
+            <rSolid name="PixelForwardPanelBaseNoseBe"/>
+            <rMaterial name="trackermaterial:T_Beryllium"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseEarBe" category="support">
+            <rSolid name="PixelForwardPanelBaseEarBe"/>
+            <rMaterial name="trackermaterial:T_Beryllium"/>
+        </LogicalPart>
+        <!-- Film -->
+        <LogicalPart name="PixelForwardPanelBaseMainFilm" category="support">
+            <rSolid name="PixelForwardPanelBaseMainFilm"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseNoseFilm" category="support">
+            <rSolid name="PixelForwardPanelBaseNoseFilm"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseEarFilm" category="support">
+            <rSolid name="PixelForwardPanelBaseEarFilm"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <!-- HDI -->
+        <LogicalPart name="PixelForwardPanelBaseMainHDI" category="support">
+            <rSolid name="PixelForwardPanelBaseMainHDI"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseNoseHDI" category="support">
+            <rSolid name="PixelForwardPanelBaseNoseHDI"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPanelBaseEarHDI" category="support">
+            <rSolid name="PixelForwardPanelBaseEarHDI"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="Parts">
+        <!-- Beryllium -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseBe"/>
+            <rChild name="PixelForwardPanelBaseMainBe"/>
+            <Translation x="[AnchorX]" y="[AnchorY]+[Y2]+[MainLength]/2." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseBe"/>
+            <rChild name="PixelForwardPanelBaseNoseBe"/>
+            <Translation x="[AnchorX]" y="[AnchorY]+[Y2]-[NoseLength]/2." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseBe"/>
+            <rChild name="PixelForwardPanelBaseEarBe"/>
+            <Translation x="[AnchorX]+[earX]" y="[AnchorY]+[earY]" z="0."/>
+        </PosPart>
+        <!-- Film -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseFilm"/>
+            <rChild name="PixelForwardPanelBaseMainFilm"/>
+            <Translation x="[AnchorX]" y="[AnchorY]+[Y2]+[MainLength]/2." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseFilm"/>
+            <rChild name="PixelForwardPanelBaseNoseFilm"/>
+            <Translation x="[AnchorX]" y="[AnchorY]+[Y2]-[NoseLength]/2." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseFilm"/>
+            <rChild name="PixelForwardPanelBaseEarFilm"/>
+            <Translation x="[AnchorX]+[earX]" y="[AnchorY]+[earY]" z="0."/>
+        </PosPart>
+        <!-- HDI -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseHDI"/>
+            <rChild name="PixelForwardPanelBaseMainHDI"/>
+            <Translation x="[AnchorX]" y="[AnchorY]+[Y2]+[MainLength]/2." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseHDI"/>
+            <rChild name="PixelForwardPanelBaseNoseHDI"/>
+            <Translation x="[AnchorX]" y="[AnchorY]+[Y2]-[NoseLength]/2." z="0."/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPanelBaseHDI"/>
+            <rChild name="PixelForwardPanelBaseEarHDI"/>
+            <Translation x="[AnchorX]+[earX]" y="[AnchorY]+[earY]" z="0."/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPlaq.xml b/examples/DDCMS/data/pixfwdPlaq.xml
new file mode 100644
index 0000000000000000000000000000000000000000..afb4bc42eb36926dca0cfb97cf3990455ddee770
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPlaq.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Sunanda Banjeree
+         @modified Dmitry Onoprienko
+         
+         == COMPONENT DEFINED BY THIS FILE: ==
+         
+         Common parts for all types of plaquettes.
+         
+         -->
+    <!-- Rotations for placing sensors -->
+    <RotationSection label="PlaquetteCommon">
+        <Rotation name="Z90" phiX="90.*deg" thetaX="90.*deg" phiY="180.*deg" thetaY="90.*deg" phiZ="0.*deg" thetaZ="0.*deg"/>
+        <Rotation name="Z270" phiX="-90.*deg" thetaX="90.*deg" phiY="0.*deg" thetaY="90.*deg" phiZ="0.*deg" thetaZ="0.*deg"/>
+    </RotationSection>
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="SensorT" value="0.270*mm"/>
+        <Constant name="BumpT" value="0.025*mm"/>
+        <Constant name="ROChipT" value="0.200*mm"/>
+        <Constant name="EpoxyT" value="0.178*mm"/>
+        <Constant name="FlexCircuitT" value="0.125*mm"/>
+        <Constant name="AdhFilmT" value="0.051*mm"/>
+        <Constant name="BackingT" value="0.300*mm"/>
+        <Constant name="ChoThermT" value="0.178*mm"/>
+        <Constant name="ROChipW" value="8.005*mm"/>
+        <!-- Readout chip width -->
+        <Constant name="ROChipH" value="9.935*mm"/>
+        <!-- Readout chip height -->
+        <Constant name="ROChipSpaceW" value="8.100*mm"/>
+        <!-- Distance (along width) between centers of adjacent chips -->
+    </ConstantsSection>
+    <ConstantsSection label="Calculated">
+        <!-- Thicknesses of superlayers -->
+        <Constant name="BumpROChipEpoxyT" value="[BumpT]+[ROChipT]+[EpoxyT]"/>
+        <Constant name="PassiveT" value="[BumpROChipEpoxyT]+[FlexCircuitT]+[AdhFilmT]+[BackingT]+[ChoThermT]"/>
+        <Constant name="PlaquetteT" value="[SensorT]+[PassiveT]"/>
+        <!-- Z-positions of superlayers to be positioned into plaquette root volume -->
+        <Constant name="SensorZ" value="([PlaquetteT]-[SensorT])/2."/>
+        <Constant name="PassiveZ" value="(-[PlaquetteT]+[PassiveT])/2."/>
+        <!-- Z-positions of layers to be positioned into "Passive" layer -->
+        <Constant name="BumpROChipEpoxyZ" value="([PassiveT]-[BumpROChipEpoxyT])/2."/>
+        <Constant name="FlexCircuitZ" value="[PassiveT]/2.-[BumpROChipEpoxyT]-[FlexCircuitT]/2."/>
+        <Constant name="AdhFilmZ" value="[PassiveT]/2.-[BumpROChipEpoxyT]-[FlexCircuitT]-[AdhFilmT]/2."/>
+        <Constant name="BackingZ" value="[PassiveT]/2.-[BumpROChipEpoxyT]-[FlexCircuitT]-[AdhFilmT]-[BackingT]/2."/>
+        <Constant name="ChoThermZ" value="(-[PassiveT]+[ChoThermT])/2."/>
+    </ConstantsSection>
+    <!-- Readout chip with epoxy and bump bond -->
+    <ConstantsSection label="BumpROChipCalculated">
+        <Constant name="BumpZ" value="([BumpROChipEpoxyT]-[BumpT])/2."/>
+        <Constant name="EpoxyZ" value="(-[BumpROChipEpoxyT]+[EpoxyT])/2."/>
+    </ConstantsSection>
+    <SolidSection label="BumpROChipEpoxy">
+        <Box name="PixelForwardBumpROChipEpoxy" dx="[ROChipW]/2." dy="[ROChipH]/2" dz="[BumpROChipEpoxyT]/2."/>
+        <Box name="PixelForwardBump" dx="[ROChipW]/2." dy="[ROChipH]/2" dz="[BumpT]/2."/>
+        <Box name="PixelForwardEpoxy" dx="[ROChipW]/2." dy="[ROChipH]/2" dz="[EpoxyT]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="BumpROChipEpoxy">
+        <LogicalPart name="PixelForwardBumpROChipEpoxy" category="unspecified">
+            <rSolid name="PixelForwardBumpROChipEpoxy"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBump" category="unspecified">
+            <rSolid name="PixelForwardBump"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_Bump"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardEpoxy" category="unspecified">
+            <rSolid name="PixelForwardEpoxy"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="BumpROChipEpoxy">
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBumpROChipEpoxy"/>
+            <rChild name="PixelForwardBump"/>
+            <Translation x="0.*mm" y="0.*mm" z="[BumpZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardBumpROChipEpoxy"/>
+            <rChild name="PixelForwardEpoxy"/>
+            <Translation x="0.*mm" y="0.*mm" z="[EpoxyZ]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPlaq1x2.xml b/examples/DDCMS/data/pixfwdPlaq1x2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e1714fe8e0f52ff5ac17c34dfb17281fdcf7e876
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPlaq1x2.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Victoria Martin
+         @modified Dmitry Onoprienko
+         
+         == Subsystem or component described by the file ==
+         
+         1x2 Plaquette (Left and Right versions).
+         
+         == Root volume and its reference frame ==
+         
+         Root volume : PixelForwardPlaquette1x2Left and PixelForwardPlaquette1x2Right
+         
+         Y is in the plane of the plaquette, pointing away from the beam line
+         Z is perpendicular to the plaquette, pointing to the sensor side
+         
+         == Positioning ==
+         
+         The file defines AnchorXLeft(AnchorXRight) and AnchorY constants that 
+         correspond to the anchor point (aka active center) coordinates in the plaquette
+         root volume PixelForwardPlaquette1x2Left(PixelForwardPlaquette1x2Right).
+         
+         The two root volumes defined by this file contain ...........
+         
+         PixelForwardPlaquette1x2Right should be positioned unrotated into "PixelForwardPanel3Right" panel,
+         and PixelForwardPlaquette1x2Left should be positioned unrotated into "PixelForwardPanel4Left" panel.
+         
+         == Additional comments ==
+         
+         The volume representing the active part of the sensor is placed with 90 degrees 
+         rotation around Z axis to make its local reference frame Y go along the longer side.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="PlaquetteW" value="21.358*mm"/>
+        <Constant name="PlaquetteH" value="15.048*mm"/>
+        <Constant name="SensorW" value="18.494*mm"/>
+        <Constant name="SensorH" value="10.394*mm"/>
+        <Constant name="ActiveW" value="16.200*mm"/>
+        <Constant name="ActiveH" value="8.100*mm"/>
+        <Constant name="ROChipX_TopRight" value="3.074*mm"/>
+        <Constant name="ROChipY_TopRight" value="3.905*mm"/>
+        <Constant name="ActiveCenterXRight" value="11.137*mm"/>
+        <Constant name="ActiveCenterXLeft" value="11.116*mm"/>
+        <Constant name="ActiveCenterY" value="9.833*mm"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="AnchorXRight" value=" [PlaquetteW]/2.-[ActiveCenterXRight]"/>
+        <Constant name="AnchorXLeft" value="-[PlaquetteW]/2.+[ActiveCenterXLeft]"/>
+        <Constant name="AnchorY" value="[PlaquetteH]/2.-[ActiveCenterY]"/>
+    </ConstantsSection>
+    <SolidSection label="All">
+        <!-- Root volume -->
+        <Box name="PixelForwardPlaquette1x2" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PlaquetteT]/2."/>
+        <!-- Sensor -->
+        <Box name="PixelForwardSensor1x2" dx="[SensorH]/2." dy="[SensorW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <Box name="PixelForwardActive1x2" dx="[ActiveH]/2." dy="[ActiveW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <!-- Passive part -->
+        <Box name="PixelForwardPassive1x2" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PassiveT]/2."/>
+        <Box name="PixelForwardFlexCircuit1x2" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:FlexCircuitT]/2."/>
+        <Box name="PixelForwardAdhFilm1x2" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:AdhFilmT]/2."/>
+        <Box name="PixelForwardBacking1x2" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:BackingT]/2."/>
+        <Box name="PixelForwardChoTherm1x2" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:ChoThermT]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="All">
+        <!-- Root volumes -->
+        <LogicalPart name="PixelForwardPlaquette1x2Right" category="envelope">
+            <rSolid name="PixelForwardPlaquette1x2"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPlaquette1x2Left" category="envelope">
+            <rSolid name="PixelForwardPlaquette1x2"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <!-- Sensor -->
+        <LogicalPart name="PixelForwardSensor1x2" category="unspecified">
+            <rSolid name="PixelForwardSensor1x2"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardActive1x2" category="sensitive">
+            <rSolid name="PixelForwardActive1x2"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <!-- Passive part -->
+        <LogicalPart name="PixelForwardPassive1x2" category="envelope">
+            <rSolid name="PixelForwardPassive1x2"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardFlexCircuit1x2" category="unspecified">
+            <rSolid name="PixelForwardFlexCircuit1x2"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardAdhFilm1x2" category="unspecified">
+            <rSolid name="PixelForwardAdhFilm1x2"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBacking1x2" category="unspecified">
+            <rSolid name="PixelForwardBacking1x2"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardChoTherm1x2" category="unspecified">
+            <rSolid name="PixelForwardChoTherm1x2"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="All">
+        <!-- Sensor -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardSensor1x2"/>
+            <rChild name="PixelForwardActive1x2"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette1x2Right"/>
+            <rChild name="PixelForwardSensor1x2"/>
+            <Translation x="[AnchorXRight]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette1x2Left"/>
+            <rChild name="PixelForwardSensor1x2"/>
+            <Translation x="[AnchorXLeft]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <!-- Passive part -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette1x2Right"/>
+            <rChild name="PixelForwardPassive1x2"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette1x2Left"/>
+            <rChild name="PixelForwardPassive1x2"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+            <rReflectionRotation name="pixfwdCommon:ReflectionX"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x2"/>
+            <rChild name="PixelForwardFlexCircuit1x2"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:FlexCircuitZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x2"/>
+            <rChild name="PixelForwardAdhFilm1x2"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:AdhFilmZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x2"/>
+            <rChild name="PixelForwardBacking1x2"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:BackingZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x2"/>
+            <rChild name="PixelForwardChoTherm1x2"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:ChoThermZ]"/>
+        </PosPart>
+        <!-- Readout chips in the passive part -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x2"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPassive1x2"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPlaq1x5.xml b/examples/DDCMS/data/pixfwdPlaq1x5.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd09b4f4316b61018f7c59e43ca7c426f279b5d9
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPlaq1x5.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Victoria Martin
+         @modified Dmitry Onoprienko
+         
+         == Subsystem or component described by the file ==
+         
+         1x5 Plaquette (Left and Right versions).
+         
+         == Root volume and its reference frame ==
+         
+         Root volume : PixelForwardPlaquette1x5Left and PixelForwardPlaquette1x5Right
+         
+         Y is in the plane of the plaquette, pointing away from the beam line
+         Z is perpendicular to the plaquette, pointing to the sensor side
+         
+         == Positioning ==
+         
+         The file defines AnchorXLeft(AnchorXRight) and AnchorY constants that 
+         correspond to the anchor point (aka active center) coordinates in the plaquette
+         root volume PixelForwardPlaquette1x5Left(PixelForwardPlaquette1x5Right).
+         
+         The two root volumes defined by this file contain ...........
+         
+         PixelForwardPlaquette1x5Right should be positioned unrotated into "PixelForwardPanel4Left" panel,
+         and PixelForwardPlaquette1x5Left should be positioned unrotated into "PixelForwardPanel4Right" panel.
+         (Not a typo - a follow notation from the drawings).
+         
+         == Additional comments ==
+         
+         The volume representing the active part of the sensor is placed with 90 degrees 
+         rotation around Z axis to make its local reference frame Y go along the longer side.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="PlaquetteW" value="45.658*mm"/>
+        <Constant name="PlaquetteH" value="15.048*mm"/>
+        <Constant name="SensorW" value="42.794*mm"/>
+        <Constant name="SensorH" value="10.394*mm"/>
+        <Constant name="ActiveW" value="40.500*mm"/>
+        <Constant name="ActiveH" value="8.100*mm"/>
+        <Constant name="ROChipX_BottomLeft" value="42.584*mm"/>
+        <Constant name="ROChipY_BottomLeft" value="11.143*mm"/>
+        <Constant name="ActiveCenterXRight" value="22.371*mm"/>
+        <Constant name="ActiveCenterXLeft" value="23.266*mm"/>
+        <Constant name="ActiveCenterY" value="9.833*mm"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="AnchorXRight" value=" [PlaquetteW]/2.-[ActiveCenterXRight]"/>
+        <Constant name="AnchorXLeft" value=" [PlaquetteW]/2.-[ActiveCenterXLeft]"/>
+        <Constant name="AnchorY" value="-[PlaquetteH]/2.+[ActiveCenterY]"/>
+    </ConstantsSection>
+    <SolidSection label="All">
+        <!-- Root volume -->
+        <Box name="PixelForwardPlaquette1x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PlaquetteT]/2."/>
+        <!-- Sensor -->
+        <Box name="PixelForwardSensor1x5" dx="[SensorH]/2." dy="[SensorW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <Box name="PixelForwardActive1x5" dx="[ActiveH]/2." dy="[ActiveW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <!-- Passive part -->
+        <Box name="PixelForwardPassive1x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PassiveT]/2."/>
+        <Box name="PixelForwardFlexCircuit1x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:FlexCircuitT]/2."/>
+        <Box name="PixelForwardAdhFilm1x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:AdhFilmT]/2."/>
+        <Box name="PixelForwardBacking1x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:BackingT]/2."/>
+        <Box name="PixelForwardChoTherm1x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:ChoThermT]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="All">
+        <!-- Root volumes -->
+        <LogicalPart name="PixelForwardPlaquette1x5Right" category="envelope">
+            <rSolid name="PixelForwardPlaquette1x5"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPlaquette1x5Left" category="envelope">
+            <rSolid name="PixelForwardPlaquette1x5"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <!-- Sensor -->
+        <LogicalPart name="PixelForwardSensor1x5" category="unspecified">
+            <rSolid name="PixelForwardSensor1x5"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardActive1x5" category="sensitive">
+            <rSolid name="PixelForwardActive1x5"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <!-- Passive part -->
+        <LogicalPart name="PixelForwardPassive1x5" category="envelope">
+            <rSolid name="PixelForwardPassive1x5"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardFlexCircuit1x5" category="unspecified">
+            <rSolid name="PixelForwardFlexCircuit1x5"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardAdhFilm1x5" category="unspecified">
+            <rSolid name="PixelForwardAdhFilm1x5"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBacking1x5" category="unspecified">
+            <rSolid name="PixelForwardBacking1x5"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardChoTherm1x5" category="unspecified">
+            <rSolid name="PixelForwardChoTherm1x5"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="All">
+        <!-- Sensor -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardSensor1x5"/>
+            <rChild name="PixelForwardActive1x5"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette1x5Right"/>
+            <rChild name="PixelForwardSensor1x5"/>
+            <Translation x="[AnchorXRight]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette1x5Left"/>
+            <rChild name="PixelForwardSensor1x5"/>
+            <Translation x="[AnchorXLeft]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <!-- Passive part -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette1x5Right"/>
+            <rChild name="PixelForwardPassive1x5"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette1x5Left"/>
+            <rChild name="PixelForwardPassive1x5"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+            <rReflectionRotation name="pixfwdCommon:ReflectionX"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="PixelForwardFlexCircuit1x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:FlexCircuitZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="PixelForwardAdhFilm1x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:AdhFilmZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="PixelForwardBacking1x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:BackingZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="PixelForwardChoTherm1x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:ChoThermZ]"/>
+        </PosPart>
+        <!-- Readout chips in the passive part -->
+        <PosPart copyNumber="3">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="4">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="5">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+2.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="6">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+3.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="7">
+            <rParent name="PixelForwardPassive1x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+4.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPlaq2x3.xml b/examples/DDCMS/data/pixfwdPlaq2x3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a894136184697a480e15af38ef9d434f660d7bbf
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPlaq2x3.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Victoria Martin
+         @modified Dmitry Onoprienko
+         
+         == Subsystem or component described by the file ==
+         
+         2x3 Plaquette.
+         
+         == Root volume and its reference frame ==
+         
+         Root volume : PixelForwardPlaquette2x3Up and PixelForwardPlaquette2x3Down
+         
+         Y is in the plane of the plaquette, pointing away from the beam line
+         Z is perpendicular to the plaquette, pointing to the sensor side
+         
+         == Positioning ==
+         
+         The file defines AnchorX and AnchorY constants that 
+         correspond to the anchor point (aka active center) coordinates in the plaquette
+         root volume.
+         
+         The two root volumes defined by this file contain identical geometry, but differ
+         in the directions of X and Y axes of the sensitive volume.
+         
+         PixelForwardPlaquette2x3Up should be positioned unrotated into "PixelForwardPanel3Right" panel,
+         and rotated by 180 deg around Z into "PixelForwardPanel4Left" panel.
+         
+         PixelForwardPlaquette2x3Down should be positioned unrotated into "PixelForwardPanel4Right" panel,
+         and rotated by 180 deg around Z into "PixelForwardPanel3Left" panel.
+         
+         == Additional comments ==
+         
+         The volume representing the active part of the sensor is placed with 90 degrees 
+         rotation around Z axis to make its local reference frame Y go along the longer side.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="PlaquetteW" value="29.458*mm"/>
+        <Constant name="PlaquetteH" value="27.766*mm"/>
+        <Constant name="SensorW" value="26.594*mm"/>
+        <Constant name="SensorH" value="18.494*mm"/>
+        <Constant name="ActiveW" value="24.300*mm"/>
+        <Constant name="ActiveH" value="16.200*mm"/>
+        <Constant name="ROChipX_TopRight" value="3.074*mm"/>
+        <Constant name="ROChipY_TopRight" value="3.905*mm"/>
+        <Constant name="ROChipX_BottomLeft" value="27.300*mm"/>
+        <Constant name="ROChipY_BottomLeft" value="23.860*mm"/>
+        <Constant name="ActiveCenterX" value="15.187*mm"/>
+        <Constant name="ActiveCenterY" value="13.883*mm"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="AnchorX" value=" [PlaquetteW]/2.-[ActiveCenterX]"/>
+        <Constant name="AnchorY" value="0.*mm"/>
+    </ConstantsSection>
+    <SolidSection label="All">
+        <!-- Root volume -->
+        <Box name="PixelForwardPlaquette2x3" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PlaquetteT]/2."/>
+        <!-- Sensor -->
+        <Box name="PixelForwardSensor2x3" dx="[SensorH]/2." dy="[SensorW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <Box name="PixelForwardActive2x3" dx="[ActiveH]/2." dy="[ActiveW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <!-- Passive part -->
+        <Box name="PixelForwardPassive2x3" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PassiveT]/2."/>
+        <Box name="PixelForwardFlexCircuit2x3" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:FlexCircuitT]/2."/>
+        <Box name="PixelForwardAdhFilm2x3" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:AdhFilmT]/2."/>
+        <Box name="PixelForwardBacking2x3" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:BackingT]/2."/>
+        <Box name="PixelForwardChoTherm2x3" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:ChoThermT]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="All">
+        <!-- Root volumes -->
+        <LogicalPart name="PixelForwardPlaquette2x3Up" category="envelope">
+            <rSolid name="PixelForwardPlaquette2x3"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPlaquette2x3Down" category="envelope">
+            <rSolid name="PixelForwardPlaquette2x3"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <!-- Sensor -->
+        <LogicalPart name="PixelForwardSensor2x3" category="unspecified">
+            <rSolid name="PixelForwardSensor2x3"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardActive2x3" category="sensitive">
+            <rSolid name="PixelForwardActive2x3"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <!-- Passive part -->
+        <LogicalPart name="PixelForwardPassive2x3" category="envelope">
+            <rSolid name="PixelForwardPassive2x3"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardFlexCircuit2x3" category="unspecified">
+            <rSolid name="PixelForwardFlexCircuit2x3"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardAdhFilm2x3" category="unspecified">
+            <rSolid name="PixelForwardAdhFilm2x3"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBacking2x3" category="unspecified">
+            <rSolid name="PixelForwardBacking2x3"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardChoTherm2x3" category="unspecified">
+            <rSolid name="PixelForwardChoTherm2x3"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="All">
+        <!-- Sensor -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardSensor2x3"/>
+            <rChild name="PixelForwardActive2x3"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette2x3Up"/>
+            <rChild name="PixelForwardSensor2x3"/>
+            <Translation x="[AnchorX]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z90"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette2x3Down"/>
+            <rChild name="PixelForwardSensor2x3"/>
+            <Translation x="[AnchorX]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <!-- Passive part -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette2x3Up"/>
+            <rChild name="PixelForwardPassive2x3"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette2x3Down"/>
+            <rChild name="PixelForwardPassive2x3"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="PixelForwardFlexCircuit2x3"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:FlexCircuitZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="PixelForwardAdhFilm2x3"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:AdhFilmZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="PixelForwardBacking2x3"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:BackingZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="PixelForwardChoTherm2x3"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:ChoThermZ]"/>
+        </PosPart>
+        <!-- Readout chips in the passive part -->
+        <PosPart copyNumber="8">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="9">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="10">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-2.*[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="11">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="12">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="13">
+            <rParent name="PixelForwardPassive2x3"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+2.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPlaq2x4.xml b/examples/DDCMS/data/pixfwdPlaq2x4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b274917f42583a6cd25b13cfac06e3f054ad0b7a
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPlaq2x4.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Victoria Martin
+         @modified Dmitry Onoprienko
+         
+         == Subsystem or component described by the file ==
+         
+         2x4 Plaquette.
+         
+         == Root volume and its reference frame ==
+         
+         Root volume : PixelForwardPlaquette2x4Up and PixelForwardPlaquette2x4Down
+         
+         Y is in the plane of the plaquette, pointing away from the beam line
+         Z is perpendicular to the plaquette, pointing to the sensor side
+         
+         == Positioning ==
+         
+         The file defines AnchorX and AnchorY constants that 
+         correspond to the anchor point (aka active center) coordinates in the plaquette
+         root volume.
+         
+         The two root volumes defined by this file contain identical geometry, but differ
+         in the directions of X and Y axes of the sensitive volume.
+         
+         PixelForwardPlaquette2x4Up should be positioned unrotated into "PixelForwardPanel3Right" panel,
+         and rotated by 180 deg around Z into "PixelForwardPanel4Left" panel.
+         
+         PixelForwardPlaquette2x4Down should be positioned unrotated into "PixelForwardPanel4Right" panel,
+         and rotated by 180 deg around Z into "PixelForwardPanel3Left" panel.
+         
+         == Additional comments ==
+         
+         The volume representing the active part of the sensor is placed with 90 degrees 
+         rotation around Z axis to make its local reference frame Y go along the longer side.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="PlaquetteW" value="37.558*mm"/>
+        <Constant name="PlaquetteH" value="27.766*mm"/>
+        <Constant name="SensorW" value="34.694*mm"/>
+        <Constant name="SensorH" value="18.494*mm"/>
+        <Constant name="ActiveW" value="32.400*mm"/>
+        <Constant name="ActiveH" value="16.200*mm"/>
+        <Constant name="ROChipX_TopRight" value="3.074*mm"/>
+        <Constant name="ROChipY_TopRight" value="3.905*mm"/>
+        <Constant name="ROChipX_BottomLeft" value="35.400*mm"/>
+        <Constant name="ROChipY_BottomLeft" value="23.860*mm"/>
+        <Constant name="ActiveCenterX" value="19.237*mm"/>
+        <Constant name="ActiveCenterY" value="13.883*mm"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="AnchorX" value=" [PlaquetteW]/2.-[ActiveCenterX]"/>
+        <Constant name="AnchorY" value="0.*mm"/>
+    </ConstantsSection>
+    <SolidSection label="All">
+        <!-- Root volume -->
+        <Box name="PixelForwardPlaquette2x4" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PlaquetteT]/2."/>
+        <!-- Sensor -->
+        <Box name="PixelForwardSensor2x4" dx="[SensorH]/2." dy="[SensorW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <Box name="PixelForwardActive2x4" dx="[ActiveH]/2." dy="[ActiveW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <!-- Passive part -->
+        <Box name="PixelForwardPassive2x4" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PassiveT]/2."/>
+        <Box name="PixelForwardFlexCircuit2x4" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:FlexCircuitT]/2."/>
+        <Box name="PixelForwardAdhFilm2x4" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:AdhFilmT]/2."/>
+        <Box name="PixelForwardBacking2x4" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:BackingT]/2."/>
+        <Box name="PixelForwardChoTherm2x4" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:ChoThermT]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="All">
+        <!-- Root volumes -->
+        <LogicalPart name="PixelForwardPlaquette2x4Up" category="envelope">
+            <rSolid name="PixelForwardPlaquette2x4"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPlaquette2x4Down" category="envelope">
+            <rSolid name="PixelForwardPlaquette2x4"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <!-- Sensor -->
+        <LogicalPart name="PixelForwardSensor2x4" category="unspecified">
+            <rSolid name="PixelForwardSensor2x4"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardActive2x4" category="sensitive">
+            <rSolid name="PixelForwardActive2x4"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <!-- Passive part -->
+        <LogicalPart name="PixelForwardPassive2x4" category="envelope">
+            <rSolid name="PixelForwardPassive2x4"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardFlexCircuit2x4" category="unspecified">
+            <rSolid name="PixelForwardFlexCircuit2x4"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardAdhFilm2x4" category="unspecified">
+            <rSolid name="PixelForwardAdhFilm2x4"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBacking2x4" category="unspecified">
+            <rSolid name="PixelForwardBacking2x4"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardChoTherm2x4" category="unspecified">
+            <rSolid name="PixelForwardChoTherm2x4"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="All">
+        <!-- Sensor -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardSensor2x4"/>
+            <rChild name="PixelForwardActive2x4"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette2x4Up"/>
+            <rChild name="PixelForwardSensor2x4"/>
+            <Translation x="[AnchorX]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z90"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette2x4Down"/>
+            <rChild name="PixelForwardSensor2x4"/>
+            <Translation x="[AnchorX]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <!-- Passive part -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette2x4Up"/>
+            <rChild name="PixelForwardPassive2x4"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette2x4Down"/>
+            <rChild name="PixelForwardPassive2x4"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="PixelForwardFlexCircuit2x4"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:FlexCircuitZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="PixelForwardAdhFilm2x4"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:AdhFilmZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="PixelForwardBacking2x4"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:BackingZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="PixelForwardChoTherm2x4"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:ChoThermZ]"/>
+        </PosPart>
+        <!-- Readout chips in the passive part -->
+        <PosPart copyNumber="14">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="15">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="16">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-2.*[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="17">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-3.*[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="18">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="19">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="20">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+2.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="21">
+            <rParent name="PixelForwardPassive2x4"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+3.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdPlaq2x5.xml b/examples/DDCMS/data/pixfwdPlaq2x5.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f39896ab606632b9744835d61eeeae1e231c5716
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdPlaq2x5.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Victoria Martin
+         @modified Dmitry Onoprienko
+         
+         == Subsystem or component described by the file ==
+         
+         2x5 Plaquette.
+         
+         == Root volume and its reference frame ==
+         
+         Root volume : PixelForwardPlaquette2x5Up and PixelForwardPlaquette2x5Down
+         
+         Y is in the plane of the plaquette, pointing away from the beam line
+         Z is perpendicular to the plaquette, pointing to the sensor side
+         
+         == Positioning ==
+         
+         The file defines AnchorX and AnchorY constants that 
+         correspond to the anchor point (aka active center) coordinates in the plaquette
+         root volume.
+         
+         The two root volumes defined by this file contain identical geometry, but differ
+         in the directions of X and Y axes of the sensitive volume.
+         
+         PixelForwardPlaquette2x5Up should be positioned unrotated into "PixelForwardPanel3Right" panel.
+         PixelForwardPlaquette2x5Down should be positioned rotated by 180 deg around Z into "PixelForwardPanel3Left" panel.
+         
+         == Additional comments ==
+         
+         The volume representing the active part of the sensor is placed with 90 degrees 
+         rotation around Z axis to make its local reference frame Y go along the longer side.
+         
+         -->
+    <ConstantsSection label="Input" eval="true">
+        <Constant name="PlaquetteW" value="45.658*mm"/>
+        <Constant name="PlaquetteH" value="27.766*mm"/>
+        <Constant name="SensorW" value="42.794*mm"/>
+        <Constant name="SensorH" value="18.494*mm"/>
+        <Constant name="ActiveW" value="40.500*mm"/>
+        <Constant name="ActiveH" value="16.200*mm"/>
+        <Constant name="ROChipX_TopRight" value="3.074*mm"/>
+        <Constant name="ROChipY_TopRight" value="3.905*mm"/>
+        <Constant name="ROChipX_BottomLeft" value="43.500*mm"/>
+        <Constant name="ROChipY_BottomLeft" value="23.860*mm"/>
+        <Constant name="ActiveCenterX" value="23.287*mm"/>
+        <Constant name="ActiveCenterY" value="13.883*mm"/>
+    </ConstantsSection>
+    <ConstantsSection label="Common" eval="true">
+        <Constant name="AnchorX" value=" [PlaquetteW]/2.-[ActiveCenterX]"/>
+        <Constant name="AnchorY" value="0.*mm"/>
+    </ConstantsSection>
+    <SolidSection label="All">
+        <!-- Root volume -->
+        <Box name="PixelForwardPlaquette2x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PlaquetteT]/2."/>
+        <!-- Sensor -->
+        <Box name="PixelForwardSensor2x5" dx="[SensorH]/2." dy="[SensorW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <Box name="PixelForwardActive2x5" dx="[ActiveH]/2." dy="[ActiveW]/2" dz="[pixfwdPlaq:SensorT]/2."/>
+        <!-- Passive part -->
+        <Box name="PixelForwardPassive2x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:PassiveT]/2."/>
+        <Box name="PixelForwardFlexCircuit2x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:FlexCircuitT]/2."/>
+        <Box name="PixelForwardAdhFilm2x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:AdhFilmT]/2."/>
+        <Box name="PixelForwardBacking2x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:BackingT]/2."/>
+        <Box name="PixelForwardChoTherm2x5" dx="[PlaquetteW]/2." dy="[PlaquetteH]/2." dz="[pixfwdPlaq:ChoThermT]/2."/>
+    </SolidSection>
+    <LogicalPartSection label="All">
+        <!-- Root volumes -->
+        <LogicalPart name="PixelForwardPlaquette2x5Up" category="envelope">
+            <rSolid name="PixelForwardPlaquette2x5"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardPlaquette2x5Down" category="envelope">
+            <rSolid name="PixelForwardPlaquette2x5"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <!-- Sensor -->
+        <LogicalPart name="PixelForwardSensor2x5" category="unspecified">
+            <rSolid name="PixelForwardSensor2x5"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardActive2x5" category="sensitive">
+            <rSolid name="PixelForwardActive2x5"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <!-- Passive part -->
+        <LogicalPart name="PixelForwardPassive2x5" category="envelope">
+            <rSolid name="PixelForwardPassive2x5"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardFlexCircuit2x5" category="unspecified">
+            <rSolid name="PixelForwardFlexCircuit2x5"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_VHDI"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardAdhFilm2x5" category="unspecified">
+            <rSolid name="PixelForwardAdhFilm2x5"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AdhFilm"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardBacking2x5" category="unspecified">
+            <rSolid name="PixelForwardBacking2x5"/>
+            <rMaterial name="materials:Silicon"/>
+        </LogicalPart>
+        <LogicalPart name="PixelForwardChoTherm2x5" category="unspecified">
+            <rSolid name="PixelForwardChoTherm2x5"/>
+            <rMaterial name="pixfwdMaterials:Pix_Fwd_AgEpoxy"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="All">
+        <!-- Sensor -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardSensor2x5"/>
+            <rChild name="PixelForwardActive2x5"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette2x5Up"/>
+            <rChild name="PixelForwardSensor2x5"/>
+            <Translation x="[AnchorX]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z90"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette2x5Down"/>
+            <rChild name="PixelForwardSensor2x5"/>
+            <Translation x="[AnchorX]" y="[AnchorY]" z="[pixfwdPlaq:SensorZ]"/>
+            <rRotation name="pixfwdPlaq:Z270"/>
+        </PosPart>
+        <!-- Passive part -->
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPlaquette2x5Up"/>
+            <rChild name="PixelForwardPassive2x5"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="PixelForwardPlaquette2x5Down"/>
+            <rChild name="PixelForwardPassive2x5"/>
+            <Translation x="0.*mm" y="0.*mm" z="[pixfwdPlaq:PassiveZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="PixelForwardFlexCircuit2x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:FlexCircuitZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="PixelForwardAdhFilm2x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:AdhFilmZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="PixelForwardBacking2x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:BackingZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="PixelForwardChoTherm2x5"/>
+            <Translation x="0." y="0." z="[pixfwdPlaq:ChoThermZ]"/>
+        </PosPart>
+        <!-- Readout chips in the passive part -->
+        <PosPart copyNumber="22">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="23">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="24">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-2.*[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="25">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-3.*[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="26">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_TopRight]-4.*[pixfwdPlaq:ROChipSpaceW]-[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_TopRight]-[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="27">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="28">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="29">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+2.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="30">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+3.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+        <PosPart copyNumber="31">
+            <rParent name="PixelForwardPassive2x5"/>
+            <rChild name="pixfwdPlaq:PixelForwardBumpROChipEpoxy"/>
+            <Translation x="[PlaquetteW]/2.-[ROChipX_BottomLeft]+4.*[pixfwdPlaq:ROChipSpaceW]+[pixfwdPlaq:ROChipW]/2." y="[PlaquetteH]/2.-[ROChipY_BottomLeft]+[pixfwdPlaq:ROChipH]/2." z="[pixfwdPlaq:BumpROChipEpoxyZ]"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/pixfwdTest.xml b/examples/DDCMS/data/pixfwdTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..913fbb4db9682b25e0d3f002aa1fe3f8688115a6
--- /dev/null
+++ b/examples/DDCMS/data/pixfwdTest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- 
+         
+         == CMS Forward Pixels Geometry ==
+         
+         @version 3.02.01 May 30, 2006
+         @created Dmitry Onoprienko
+         
+         == COMPONENT DEFINED BY THIS FILE: ==
+         
+         Root volume for testing forward pixels geometry.
+         
+         -->
+    <ConstantsSection label="Root" eval="true">
+        <Constant name="RootRadius" value="[pixfwd:RootRadius] + 5.*mm"/>
+        <Constant name="RootHalfLength" value="[pixfwd:ZPixelForward] + [pixfwd:RootHalfLength]*2. + 5.*mm"/>
+    </ConstantsSection>
+    <!-- Test root volume -->
+    <SolidSection label="Root">
+        <Tubs name="TestRoot" rMin="0." rMax="[RootRadius]" dz="[RootHalfLength]" startPhi="0." deltaPhi="360*deg"/>
+    </SolidSection>
+    <LogicalPartSection label="Root">
+        <LogicalPart name="TestRoot" category="envelope">
+            <rSolid name="TestRoot"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <!-- Position forward pixels endcaps inside Test root volume -->
+    <PosPartSection label="PixelForwardRootPlacement">
+        <PosPart copyNumber="1">
+            <rParent name="TestRoot"/>
+            <rChild name="pixfwd:PixelForwardZPlus"/>
+            <Translation x="0." y="0." z="[pixfwd:ZPixelForward]-[pixfwd:AnchorZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="TestRoot"/>
+            <rChild name="pixfwd:PixelForwardZMinus"/>
+            <Translation x="0." y="0." z="-[pixfwd:ZPixelForward]+[pixfwd:AnchorZ]"/>
+            <rRotation name="pixfwdCommon:Y180"/>
+        </PosPart>
+    </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tec.xml b/examples/DDCMS/data/tec.xml
new file mode 100644
index 0000000000000000000000000000000000000000..96ef559de0e661c7b0d4481e9cc8f7c7142e02b3
--- /dev/null
+++ b/examples/DDCMS/data/tec.xml
@@ -0,0 +1,389 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tec.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rin" value="22.30*cm"/>
+		<Constant name="Rout" value="113.51*cm"/>
+		<Constant name="ZStart" value="124.00*cm"/>
+		<Constant name="ZEnd" value="281.27*cm+0.34*mm"/>
+		<Constant name="WheelR" value="110.30*cm"/>
+		<Constant name="OuterSkinRin" value="113.46*cm"/>
+		<Constant name="FrontPlateRin" value="22.90*cm"/>
+		<Constant name="FrontPlateZ1" value="124.00*cm"/>
+		<Constant name="FrontPlateZ2" value="124.54*cm"/>
+		<Constant name="FixFrameDR" value="2.30*cm"/>
+		<Constant name="FixServiceRin" value="108.80*cm"/>
+		<Constant name="BeamSupportRin" value="30.00*cm"/>
+		<Constant name="BeamSupportRout" value="30.10*cm"/>
+		<Constant name="BeamSupportZ1" value="173.10*cm"/>
+		<Constant name="InTubeRin1" value="22.30*cm"/>
+		<Constant name="InTubeRin2" value="30.50*cm"/>
+		<Constant name="InTubeRout1" value="22.60*cm"/>
+		<Constant name="InTubeRout2" value="30.80*cm"/>
+		<Constant name="InTubeZ1" value="166.36*cm"/>
+		<Constant name="InTubeZ2" value="172.03*cm"/>
+		<Constant name="ServiceRin" value="110.60*cm"/>
+		<Constant name="ServiceRout" value="[OuterSkinRin]"/>
+		<Constant name="ServiceZ1" value="124.00*cm"/>
+		<Constant name="TECRailsADz" value="15.30*cm"/>
+		<Constant name="TECRailsAZ" value="160.25*cm"/>
+		<Constant name="TECRailsBDz" value="26.65*cm"/>
+		<Constant name="TECRailsBZ" value="250.10*cm"/>
+		<Constant name="RailsPhi" value="-0.664*deg"/>
+		<Constant name="RailsDeltaPhi" value="7.409*deg"/>
+		<Constant name="RailsRin" value="112.70*cm"/>
+		<Constant name="Wheel0Z" value="132.25*cm"/>
+		<Constant name="Wheel1Z" value="146.25*cm"/>
+		<Constant name="Wheel2Z" value="160.25*cm"/>
+		<Constant name="Wheel3Z" value="174.25*cm"/>
+		<Constant name="Wheel4Z" value="188.25*cm"/>
+		<Constant name="Wheel5Z" value="205.75*cm"/>
+		<Constant name="Wheel6Z" value="224.75*cm"/>
+		<Constant name="Wheel7Z" value="245.25*cm"/>
+		<Constant name="Wheel8Z" value="266.75*cm"/>
+		<Constant name="BackplateZ" value="[Wheel8Z]+87.4*mm-0.5*[tecwheel:DiskT]+0.5*[tecbackplate:Thick]"/>
+		<Constant name="AxialCableW" value="2.0*deg"/>
+		<Constant name="AxialCableT" value="0.21*cm"/>
+		<Constant name="CableFi1" value="-11.25*deg"/>
+		<Constant name="CableFi2" value="11.25*deg"/>
+		<Constant name="TECDz" value="([ZEnd]-[ZStart])/2"/>
+		<Constant name="ZPos" value="([ZEnd]+[ZStart])/2"/>
+		<Constant name="FrontFixRout" value="[FrontPlateRin]+[FixFrameDR]"/>
+		<Constant name="FrontPlateDz" value="([FrontPlateZ2]-[FrontPlateZ1])/2"/>
+		<Constant name="DPhi" value="[AxialCableW]+0.05*deg"/>
+		<Constant name="AxialCableDz" value="[tecpetpar:PetalThick]+                                          [tecpetpar:ICCThick]"/>
+		<Constant name="RailsInsARin" value="0.3*cm"/>
+		<Constant name="RailsInsARout" value="0.95*cm"/>
+		<Constant name="RailsInsADz" value="([ServiceRout]-[ServiceRin])/2-2"/>
+		<Constant name="RailsInsBRin" value="0.75*cm"/>
+		<Constant name="RailsInsBRout" value="0.95*cm"/>
+		<Constant name="RailsInsBDz" value="([ServiceRout]-[ServiceRin])/2-2"/>
+		<Constant name="RailsInsXup" value="([ServiceRout]+[ServiceRin])/2-1"/>
+		<Constant name="RailsInsXmid" value="([ServiceRout]+[ServiceRin])/2-2"/>
+		<Constant name="RailsInsXdown" value="([ServiceRout]+[ServiceRin])/2-4"/>
+	</ConstantsSection>
+	<RotationSection label="tec.xml">
+		<Rotation name="90Y" thetaX="180*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="90*deg" phiZ="0*deg"/>
+	</RotationSection>
+	<SolidSection label="tec.xml">
+		<Tubs name="TEC" rMin="[Rin]" rMax="[Rout]" dz="[TECDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TECWheels" rMin="[Rin]" rMax="[WheelR]" dz="[TECDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TECOuterSkin" rMin="[OuterSkinRin]" rMax="[Rout]" dz="[TECDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TECFrontPlate" rMin="[FrontPlateRin]" rMax="[WheelR]" dz="[FrontPlateDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TECFrontPlateFixB" rMin="[FrontPlateRin]" rMax="[FrontFixRout]" dz="[FrontPlateDz]" startPhi="-7.60*deg" deltaPhi="15.20*deg"/>
+		<Tubs name="TECFrontPlateFixT" rMin="[FixServiceRin]" rMax="[WheelR]" dz="[FrontPlateDz]" startPhi="-2.50*deg" deltaPhi="5.00*deg"/>
+		<Tubs name="TECBeamSupport" rMin="[BeamSupportRin]" rMax="[BeamSupportRout]" dz="([ZEnd]-[BeamSupportZ1])/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Polycone name="TECInnerTube" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="-[TECDz]" rMin="[InTubeRin1]" rMax="[InTubeRout1]"/>
+			<ZSection z="([InTubeZ1]-[ZPos])" rMin="[InTubeRin1]" rMax="[InTubeRout1]"/>
+			<ZSection z="([InTubeZ2]-[ZPos])" rMin="[InTubeRin2]" rMax="[InTubeRout2]"/>
+			<ZSection z="[TECDz]-2.97" rMin="[InTubeRin2]" rMax="[InTubeRout2]"/>
+		</Polycone>
+		<Tubs name="RailsA" rMin="[ServiceRin]" rMax="[tecservices:GasPipeRpos]+[tecservices:GasPipeRout]" dz="[TECRailsADz]" startPhi="[RailsDeltaPhi]/2" deltaPhi="[RailsDeltaPhi]"/>
+		<Tubs name="RailsB" rMin="[ServiceRin]" rMax="[tecservices:GasPipeRpos]+[tecservices:GasPipeRout]" dz="[TECRailsBDz]" startPhi="[RailsDeltaPhi]/2" deltaPhi="[RailsDeltaPhi]"/>
+		<Tubs name="TECRailsInsertA" rMin="[RailsInsARin]" rMax="[RailsInsARout]" dz="[RailsInsADz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TECRailsInsertB" rMin="[RailsInsBRin]" rMax="[RailsInsBRout]" dz="[RailsInsBDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+	</SolidSection>
+	<LogicalPartSection label="tec.xml">
+		<LogicalPart name="TEC" category="unspecified">
+			<rSolid name="tec:TEC"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheels" category="unspecified">
+			<rSolid name="tec:TECWheels"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECOuterSkin" category="unspecified">
+			<rSolid name="tec:TECOuterSkin"/>
+			<rMaterial name="tecmaterial:TEC_Skin"/>
+		</LogicalPart>
+		<LogicalPart name="TECFrontPlate" category="unspecified">
+			<rSolid name="tec:TECFrontPlate"/>
+			<rMaterial name="tecmaterial:Tk_SO_FC_C"/>
+		</LogicalPart>
+		<LogicalPart name="TECFrontPlateFixB" category="unspecified">
+			<rSolid name="tec:TECFrontPlateFixB"/>
+			<rMaterial name="tecmaterial:TEC_Fixframe"/>
+		</LogicalPart>
+		<LogicalPart name="TECFrontPlateFixT" category="unspecified">
+			<rSolid name="tec:TECFrontPlateFixT"/>
+			<rMaterial name="tecmaterial:TEC_FixServ"/>
+		</LogicalPart>
+		<LogicalPart name="TECBeamSupport" category="unspecified">
+			<rSolid name="tec:TECBeamSupport"/>
+			<rMaterial name="tecmaterial:Tk_SO_FC_D"/>
+		</LogicalPart>
+		<LogicalPart name="TECInnerTube" category="unspecified">
+			<rSolid name="tec:TECInnerTube"/>
+			<rMaterial name="tecmaterial:Tk_SO_FC_E"/>
+		</LogicalPart>
+		<LogicalPart name="RailsA" category="unspecified">
+			<rSolid name="tec:RailsA"/>
+			<rMaterial name="tecmaterial:TEC_Rails"/>
+		</LogicalPart>
+		<LogicalPart name="RailsB" category="unspecified">
+			<rSolid name="tec:RailsB"/>
+			<rMaterial name="tecmaterial:TEC_Rails"/>
+		</LogicalPart>
+		<LogicalPart name="TECRailsInsertA" category="unspecified">
+			<rSolid name="tec:TECRailsInsertA"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TECRailsInsertB" category="unspecified">
+			<rSolid name="tec:TECRailsInsertB"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tec.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tec:TEC"/>
+			<rChild name="tec:TECWheels"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TEC"/>
+			<rChild name="tec:TECOuterSkin"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecbackplate:TECBackPlate"/>
+			<Translation x="[zero]" y="[zero]" z="[BackplateZ]-[ZPos]"/>
+			<!--Translation x="[zero]" y="[zero]" z="[TECDz]-0.5*[tecbackplate:Thick]"/-->
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tec:TECFrontPlate"/>
+			<Translation x="[zero]" y="[zero]" z="([FrontPlateZ2]+[FrontPlateZ1])/2-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tec:TECBeamSupport"/>
+			<Translation x="[zero]" y="[zero]" z="([BeamSupportZ1]-[ZStart])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tec:TECInnerTube"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TEC"/>
+			<rChild name="tecservices:TECServices"/>
+		</PosPart>
+		<PosPart copyNumber="0">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheela:TECWheelA"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel0Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheela:TECWheelA"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel1Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheela:TECWheelA"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel2Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheelb:TECWheelB"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel3Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheelb:TECWheelB"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel4Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="5">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheel6:TECWheel6"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel5Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="6">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheelc:TECWheelC"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel6Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="7">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheelc:TECWheelC"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel7Z]-[ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="8">
+			<rParent name="tec:TECWheels"/>
+			<rChild name="tecwheeld:TECWheelD"/>
+			<Translation x="[zero]" y="[zero]" z="[Wheel8Z]-[ZPos]"/>
+		</PosPart>
+		<!-- TECRailsInsert-->
+		<!--PosPart copyNumber="1">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="-14.0*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="2">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="0*fm"/>	
+		</PosPart>
+		     <PosPart copyNumber="3">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="14.0*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="1">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="-14.0*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="2">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="0*fm"/>	
+		</PosPart>
+		     <PosPart copyNumber="3">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="14.0*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="4">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="-14.0*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="5">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="0*fm"/>	
+		</PosPart>
+		     <PosPart copyNumber="6">
+		     <rParent name="tec:RailsA"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="14.0*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="1">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="-25.35*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="2">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="-4.85*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="3">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="16.65*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="4">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertA"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXmid]" y="5.69*cm" z="25.39*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="1">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="-25.35*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="2">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="-4.85*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="3">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="16.65*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="4">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXup]" y="1.69*cm" z="25.39*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="5">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="-25.35*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="6">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="-4.85*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="7">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="16.65*cm"/>	
+		</PosPart>
+		     <PosPart copyNumber="8">
+		     <rParent name="tec:RailsB"/>
+		     <rChild name="tec:TECRailsInsertB"/>
+		     <rRotation name="90Y"/>
+		     <Translation x="[RailsInsXdown]" y="9.69*cm" z="25.35*cm"/>	
+		</PosPart-->
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tec:TECFrontPlate"/>
+		<String name="ChildName" value="tec:TECFrontPlateFixB"/>
+		<Numeric name="N" value="4"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="67.5*deg"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0 </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tec:TECFrontPlate"/>
+		<String name="ChildName" value="tec:TECFrontPlateFixT"/>
+		<Numeric name="N" value="8"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="11.25*deg"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0 </Vector>
+	</Algorithm>
+	<!--Algorithm name="track:DDTrackerAngular">
+	     <rParent name="tecservices:TECServices"/>
+	     <String  name="ChildName"   value="tec:RailsA"/>
+	     <Numeric name="N"           value="2" />
+	     <Numeric name="StartCopyNo" value="1" />
+	     <Numeric name="IncrCopyNo"  value="1" />
+	     <Numeric name="RangeAngle"  value="360*deg"/>
+	     <Numeric name="StartAngle"  value="[RailsPhi]"/>
+	     <Numeric name="Radius"      value="[zero]"/>
+	     <Vector name="Center" type="numeric" nEntries="3">
+	     0, 0, [TECRailsAZ]-[ZPos] </Vector>
+	</Algorithm>
+	     <Algorithm name="track:DDTrackerAngular">
+	     <rParent name="tecservices:TECServices"/>
+	     <String  name="ChildName"   value="tec:RailsB"/>
+	     <Numeric name="N"           value="2" />
+	     <Numeric name="StartCopyNo" value="1" />
+	     <Numeric name="IncrCopyNo"  value="1" />
+	     <Numeric name="RangeAngle"  value="360*deg"/>
+	     <Numeric name="StartAngle"  value="[RailsPhi]"/>
+	     <Numeric name="Radius"      value="[zero]"/>
+	     <Vector name="Center" type="numeric" nEntries="3">
+	     0, 0, [TECRailsBZ]-[ZPos] </Vector>
+	</Algorithm-->
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecbackplate.xml b/examples/DDCMS/data/tecbackplate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d86aa0415b98651d952c3850eaa040bbd92d9011
--- /dev/null
+++ b/examples/DDCMS/data/tecbackplate.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <ConstantsSection label="tecbackplate.xml" eval="true">
+  <Constant name="zero" value="0.0*fm"/>
+  <Constant name="Rin" value="[tecpetal3:PetalContRmin]"/>
+  <!--  drawings show Rin =302*mm-->
+  <Constant name="Rout" value="[tec:WheelR]"/>
+  <Constant name="Thick" value="[tecwheel:DiskT] + [ThermalShieldThick]"/>
+  <Constant name="ThermalShieldRout" value="1053*mm"/>
+  <Constant name="ThermalShieldThick" value="49.7*mm"/>
+  <Constant name="CircPipeRin" value="[ThermalShieldRout]"/>
+  <Constant name="CircPipeRout" value="[Rout]"/>
+  <Constant name="CircPipeThick" value="[ThermalShieldThick]"/>
+  <Constant name="TiltmeterDist" value="792*mm"/>
+  <Constant name="TiltmeterDxy" value="42*mm"/>
+  <Constant name="TiltmeterDz" value="[ThermalShieldThick]/2."/>
+ </ConstantsSection>
+ <SolidSection label="tecbackplate.xml">
+  <Tubs name="TECBackPlate" rMin="[Rin]" rMax="[Rout]" dz="0.5*[Thick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="TECThermalShield" rMin="[Rin]" rMax="[ThermalShieldRout]" dz="0.5*[ThermalShieldThick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="TECCircPipe" rMin="[CircPipeRin]" rMax="[CircPipeRout]" dz="0.5*[CircPipeThick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Box name="TECTiltmeter" dx="[TiltmeterDxy]" dy="[TiltmeterDxy]" dz="[TiltmeterDz]"/>
+ </SolidSection>
+ <LogicalPartSection label="tecbackplate.xml">
+  <LogicalPart name="TECBackPlate" category="unspecified">
+   <rSolid name="tecbackplate:TECBackPlate"/>
+   <rMaterial name="materials:Air"/>
+  </LogicalPart>
+  <LogicalPart name="TECBackDisk" category="unspecified">
+   <rSolid name="tecwheeld:TECWheelDiskD"/>
+   <rMaterial name="tecmaterial:TEC_BackDiskCF"/>
+  </LogicalPart>
+  <LogicalPart name="TECBackDiskNomex" category="unspecified">
+   <rSolid name="tecwheeld:TECWheelNomexD"/>
+   <rMaterial name="tecmaterial:TEC_Nomex"/>
+  </LogicalPart>
+  <LogicalPart name="TECBackDiskGroundingRing" category="unspecified">
+   <rSolid name="tecwheel:TECGroundingRing"/>
+   <rMaterial name="trackermaterial:T_Copper"/>
+  </LogicalPart>
+  <LogicalPart name="TECThermalShield" category="unspecified">
+   <rSolid name="tecbackplate:TECThermalShield"/>
+   <rMaterial name="tecmaterial:TEC_ThermalShield"/>
+  </LogicalPart>
+  <LogicalPart name="TECCircPipe" category="unspecified">
+   <rSolid name="tecbackplate:TECCircPipe"/>
+   <rMaterial name="tecmaterial:TEC_CircPipe"/>
+  </LogicalPart>
+  <LogicalPart name="TECTiltmeter" category="unspecified">
+   <rSolid name="tecbackplate:TECTiltmeter"/>
+   <rMaterial name="tecmaterial:TEC_Tiltmeter"/>
+  </LogicalPart>
+ </LogicalPartSection>
+ <PosPartSection label="tecbackplate.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tecbackplate:TECBackPlate"/>
+   <rChild name="tecbackplate:TECBackDisk"/>
+   <Translation x="[zero]" y="[zero]" z="(-0.5*[Thick]+0.5*[tecwheel:DiskT])"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="tecbackplate:TECBackDisk"/>
+   <rChild name="tecbackplate:TECBackDiskNomex"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="tecbackplate:TECBackDisk"/>
+   <rChild name="tecbackplate:TECBackDiskGroundingRing"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="tecbackplate:TECBackPlate"/>
+   <rChild name="tecbackplate:TECThermalShield"/>
+   <Translation x="[zero]" y="[zero]" z="(-0.5*[Thick]+[tecwheel:DiskT]+0.5*[ThermalShieldThick])"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="tecbackplate:TECBackPlate"/>
+   <rChild name="tecbackplate:TECCircPipe"/>
+   <Translation x="[zero]" y="[zero]" z="(-0.5*[Thick]+[tecwheel:DiskT]+0.5*[CircPipeThick])"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="tecbackplate:TECThermalShield"/>
+   <rChild name="tecbackplate:TECTiltmeter"/>
+   <Translation x="[zero]" y="[TiltmeterDist]" z="[zero]"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="tecbackplate:TECThermalShield"/>
+   <rChild name="tecbackplate:TECTiltmeter"/>
+   <Translation x="[TiltmeterDist]" y="[zero]" z="[zero]"/>
+  </PosPart>
+  <PosPart copyNumber="3">
+   <rParent name="tecbackplate:TECThermalShield"/>
+   <rChild name="tecbackplate:TECTiltmeter"/>
+   <Translation x="[zero]" y="-[TiltmeterDist]" z="[zero]"/>
+  </PosPart>
+  <PosPart copyNumber="4">
+   <rParent name="tecbackplate:TECThermalShield"/>
+   <rChild name="tecbackplate:TECTiltmeter"/>
+   <Translation x="-[TiltmeterDist]" y="[zero]" z="[zero]"/>
+  </PosPart>
+ </PosPartSection>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="tecbackplate:TECBackDiskNomex"/>
+  <String name="ChildName" value="tecwheeld:TECFixSupportD"/>
+  <Numeric name="N" value="[tecwheel:FixSuppN]"/>
+  <Numeric name="StartCopyNo" value="1"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="[tecwheel:FixSuppFi]"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+ </Algorithm>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="tecbackplate:TECBackDiskNomex"/>
+  <String name="ChildName" value="tecwheel:TECFixService"/>
+  <Numeric name="N" value="[tecwheel:FixServN]"/>
+  <Numeric name="StartCopyNo" value="1"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="[tecwheel:FixServFi]"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmaterial.xml b/examples/DDCMS/data/tecmaterial.xml
new file mode 100644
index 0000000000000000000000000000000000000000..86e6d1f939aa9d66cb24552fa8c78965494120b2
--- /dev/null
+++ b/examples/DDCMS/data/tecmaterial.xml
@@ -0,0 +1,1093 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <MaterialSection label="tecmaterial.xml">
+    <CompositeMaterial name="Tk_SO_FC_D" density="1.69*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.84491305">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.042542086">
+        <rMaterial name="materials:Hydrogen" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11254487">
+        <rMaterial name="materials:Oxygen" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="Tk_SO_FC_E" density="1.69*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.84491305">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.042542086">
+        <rMaterial name="materials:Hydrogen" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11254487">
+        <rMaterial name="materials:Oxygen" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Nomex" density="29*mg/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_Nomex" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_SideFrameSuppliesBox" density="1.42*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.4">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.6">
+        <rMaterial name="materials:Oxygen" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Hybrid4APV" density="4.853*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01244">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03101">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01097">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00116">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.58835">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04057">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2722">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04114">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00215">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Hybrid6APV" density="4.853*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01293">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03041">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01203">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0017">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.57692">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05642">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26691">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04034">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00234">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_PitchAdapter" density="2.285*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01964">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00405">
+        <rMaterial name="materials:Antimony" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02119">
+        <rMaterial name="materials:Titanium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11635">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2683">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04916">
+        <rMaterial name="materials:Potassium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02169">
+        <rMaterial name="materials:Bor 11" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03975">
+        <rMaterial name="materials:Zinc" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03986">
+        <rMaterial name="materials:Sodium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.42001">
+        <rMaterial name="materials:Oxygen" />
+      </MaterialFraction>
+      <MaterialFraction fraction="1e-05">
+        <rMaterial name="materials:Chromium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_frame_top" density="1.931*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_frame_side_1_4" density="2.990*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.0001">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01928">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16527">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.81353">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00182">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_frame_side_5_7" density="1.835*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="9e-05">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2644">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0219">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00139">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.71223">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_SideFrSupBox" density="1.420*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00108">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.46347">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16343">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01545">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.35657">
+        <rMaterial name="materials:Silver" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_SiReenforcment" density="3.731*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_petal" density="0.325*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.0047">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0889">
+        <rMaterial name="materials:Titanium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06686">
+        <rMaterial name="tecmaterial:TEC_Nomex" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00444">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1168">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00328">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03366">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.68137">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_OptoH" density="4.200*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00692">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00084">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24416">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22453">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24707">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11266">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1401">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02371">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_DOHM" density="2.969*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.40226">
+        <rMaterial name="tobmaterial:TOB_DOH" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01487">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13519">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0768">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0183">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.31357">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03901">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_petalinsert" density="4.739*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.20957">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0385">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00797">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.74097">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00298">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC01LF" density="1.218*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04545">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03276">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00011">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06699">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26301">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03844">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04788">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.23006">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.23995">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03322">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00214">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC2F" density="3.355*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04734">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.026">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00012">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04602">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2773">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03051">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04987">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1657">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.3328">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02211">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00222">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC35F" density="3.200*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01212">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00749">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="3e-05">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0182">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26402">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00425">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00879">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01277">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10676">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.55519">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00983">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00057">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC1SF" density="2.183*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.03717">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02297">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="9e-05">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0271">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.27509">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02695">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03916">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09757">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.45429">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01787">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00175">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC0F" density="3.343*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.05789">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02385">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00014">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04343">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25615">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02798">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06098">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19929">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.30564">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02194">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00272">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC46F" density="2.865*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04776">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00874">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00012">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03324">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2646">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01026">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05032">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14008">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.42377">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01886">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00224">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC1B" density="2.115*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.02528">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02524">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="8e-05">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03771">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2752">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02962">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16436">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.42028">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02079">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00144">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC35B" density="3.157*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01025">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00704">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="3e-05">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01871">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26067">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00428">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00826">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0108">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11119">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.55824">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01005">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00048">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC0LB" density="2.916*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04027">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03318">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0001">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04808">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2504">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03892">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04242">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17716">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.3454">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02218">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00189">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC2B" density="2.868*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.03474">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02862">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="9e-05">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04148">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.23894">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03358">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03659">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.15283">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.41232">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01918">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00163">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ICC46B" density="3.096*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04246">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01272">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0001">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03072">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.238">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01492">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04473">
+        <rMaterial name="materials:Peek" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12221">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47552">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01664">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.002">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_InnerManifold" density="3.698*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.16543">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.83457">
+        <rMaterial name="materials:Titanium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_CCUM" density="4.762*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.27951">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0881">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.55723">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07516">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ServChan" density="3.182*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01852">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.88755">
+        <rMaterial name="trackermaterial:Fibre_Ribbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09393">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ServChanIns" density="0.943*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_AxGrounding" density="2.127*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.20529">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.79471">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_CoolPipe" density="9.274*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_AxCable" density="0.957*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.03995">
+        <rMaterial name="trackermaterial:MS_cntrl_cable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.32482">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.34061">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29462">
+        <rMaterial name="trackermaterial:CAB_Al60" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_GasPipe" density="2.937*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04053">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.95947">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_PhiCableL" density="0.453*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.19421">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06174">
+        <rMaterial name="trackermaterial:MS_cntrl_cable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20367">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19221">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06638">
+        <rMaterial name="materials:Tin" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17603">
+        <rMaterial name="trackermaterial:CAB_Al60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10576">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_PhiCableU" density="0.755*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.1898">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06692">
+        <rMaterial name="trackermaterial:MS_cntrl_cable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1852">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20844">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07162">
+        <rMaterial name="materials:Tin" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20623">
+        <rMaterial name="trackermaterial:CAB_Al60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07178">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_GroundingRing" density="23.139*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.2285">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.7715">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Skin" density="1.352*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.18681">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.81319">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_OptoCon" density="0.321*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50304">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.48126">
+        <rMaterial name="trackermaterial:T_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00623">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00948">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Rails" density="2.211*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_BackDiskCF" density="2.984*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_ThermalShield" density="0.166*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00385">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0037">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22782">
+        <rMaterial name="tecmaterial:TEC_Nomex" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01799">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.74664">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_CircPipe" density="0.763*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.13141">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.15522">
+        <rMaterial name="trackermaterial:MS_cntrl_cable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13783">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.41593">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11923">
+        <rMaterial name="trackermaterial:CAB_Al60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04038">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_BHDisk" density="1.556*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00661">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00467">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01234">
+        <rMaterial name="trackermaterial:T_Nomex" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03247">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.94391">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_BHCovers" density="1.834*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.05206">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11002">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.83792">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial density="2.669*0.79*g/cm3" method="mixture by weight" name="TEC_PatchpanelBox" symbol=" ">
+      <MaterialFraction fraction="0.01151">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19806">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01207">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.7577">
+        <rMaterial name="trackermaterial:MS_Cu60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00372">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01044">
+        <rMaterial name="trackermaterial:CAB_Al60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0065">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Connectors" density="2.669*1.21*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.01151">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19806">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01207">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.7577">
+        <rMaterial name="trackermaterial:MS_Cu60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00372">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01044">
+        <rMaterial name="trackermaterial:CAB_Al60" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0065">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_PatchCtrlBox" density="1.382*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00445">
+        <rMaterial name="trackermaterial:MS_cntrl_cable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.8749">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12065">
+        <rMaterial name="trackermaterial:Fibre_Ribbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_AlignRing" density="0.534*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.16497">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0189">
+        <rMaterial name="materials:Titanium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00284">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04474">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00378">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.76478">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="Tk_SO_FC_C" density="0.178*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.13847">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00404">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.15144">
+        <rMaterial name="tecmaterial:TEC_Nomex" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.70605">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_wheel_Nomex" density="0.038*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Nomex" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_wheel_CF" density="1.269*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_wheel6_Nomex" density="0.024*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Nomex" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_wheel6_CF" density="1.627*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_wheelinsert" density="1.353*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Fixframe" density="1.372*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_FixServ" density="3.050*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.14267">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.85733">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_AlignHolder" density="0.559*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_CraneBracket" density="2.021*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.0">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Beamsplitter" density="1.207*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.04703">
+        <rMaterial name="materials:Silica" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.87717">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0758">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_RailsConnector" density="6.305*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.10736">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.89264">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_RailsSupport" density="2.843*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00641">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08031">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00221">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.91107">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TEC_Tiltmeter" density="0.659*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.24222">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00433">
+        <rMaterial name="materials:Titanium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00433">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.61421">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00433">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0519">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07869">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+  </MaterialSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodpar.xml b/examples/DDCMS/data/tecmodpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..33eec4756a11ac5e0678b1167f2da242ae91edb6
--- /dev/null
+++ b/examples/DDCMS/data/tecmodpar.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodpar.xml" eval="true">
+		<Constant name="ModuleThick" value="1.55*mm"/>
+		<Constant name="DetTilt" value="0.100*rad"/>
+		<Constant name="FrameWidth" value="1.200*cm"/>
+		<Constant name="FrameOver" value="0.300*cm"/>
+		<!-- the TopFrameHeight -Parameter should be replaced by local values!!!
+		     It is used to POSITION(!) the wafer the name is missleading and kept for
+		     compatibility-->
+		<Constant name="TopFrameHeight" value="3.720*cm"/>
+		<Constant name="TopFrameThick" value="0.764*mm"/>
+		<Constant name="TopFrameZ" value="0.275*mm"/>
+		<Constant name="SideFrameThick" value="0.764*mm"/>
+		<Constant name="SideFrameZ" value="0.025*mm"/>
+		<Constant name="WaferThick1" value="0.320*mm"/>
+		<Constant name="WaferThick2" value="0.500*mm"/>
+		<Constant name="ActiveZ1" value="-0.606*mm"/>
+		<Constant name="ActiveZ2" value="-0.525*mm"/>
+		<Constant name="HybridHeight" value="2.526*cm"/>
+		<Constant name="HybridWidth" value="6.520*cm"/>
+		<Constant name="HybridThick" value="0.680*mm"/>
+		<Constant name="HybridZ" value="-0.525*mm"/>
+		<Constant name="PitchHeight" value="13.0*mm"/>
+		<Constant name="PitchStereoHeight" value="14.35*mm"/>
+		<Constant name="PitchThick" value="0.6650*mm"/>
+		<Constant name="PitchZ" value="-1.1075*mm"/>
+		<Constant name="GapModule" value="0.500*mm"/>
+		<Constant name="ModuleThickSS" value="[ModuleThick]+[SideFrameThick]"/>
+		<Constant name="ModuleThickDS" value="(2*[ModuleThick]+[GapModule])"/>
+		<Constant name="SiFrSuppBoxThick" value="0.258*mm"/>
+		<Constant name="SiReenforcementThick" value="0.387*mm"/>
+		<Constant name="NoOverlapShift" value="0.0*mm"/>
+		<Constant name="InactiveDy" value="1.50*mm"/>
+	</ConstantsSection>
+	<RotationSection label="tecmodpar.xml">
+		<Rotation name="90ZD" thetaX="-90*deg" phiX="0*deg" thetaY="0*deg" phiY="0*deg" thetaZ="90*deg" phiZ="90*deg"/>
+		<Rotation name="9NYX" thetaX="0*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="-90*deg" phiZ="0*deg"/>
+		<Rotation name="G100" thetaX="84.2704*deg" phiX="180*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="5.7296*deg" phiZ="0*deg"/>
+		<Rotation name="R180" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="0*deg" phiZ="0*deg"/>
+		<Rotation name="AR05" thetaX="-90*deg" phiX="0*deg" thetaY="180*deg" phiY="180*deg" thetaZ="90*deg" phiZ="270*deg"/>
+		<Rotation name="ART6" thetaX="90*deg" phiX="0*deg" thetaY="0*deg" phiY="0*deg" thetaZ="90*deg" phiZ="270*deg"/>
+		<Rotation name="RPHI" thetaX="90*deg" phiX="90*deg" thetaY="0*deg" phiY="0*deg" thetaZ="90*deg" phiZ="0*deg"/>
+		<Rotation name="STER" thetaX="90*deg" phiX="-84.2704*deg" thetaY="180*deg" phiY="0*deg" thetaZ="90*deg" phiZ="5.7296*deg"/>
+		<Rotation name="RFI2" thetaX="90*deg" phiX="-90*deg" thetaY="180*deg" phiY="0*deg" thetaZ="90*deg" phiZ="0*deg"/>
+		<Rotation name="PITC" thetaX="90*deg" phiX="0*deg" thetaY="0*deg" phiY="0*deg" thetaZ="90*deg" phiZ="-90*deg"/>
+	</RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule0.xml b/examples/DDCMS/data/tecmodule0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..47b24c30281437bb1f1c6ae9d8fd2f564e5af86c
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule0.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule0.xml" eval="true">
+		<Constant name="Rin" value="23.08*cm"/>
+		<Constant name="Rout" value="36.65*cm"/>
+		<Constant name="FullHeight" value="8.7236000*cm"/>
+		<Constant name="ActiveHeight" value="8.5160000*cm"/>
+		<Constant name="DlTop" value="8.7914000*cm"/>
+		<Constant name="DlBottom" value="6.4610000*cm"/>
+		<Constant name="SideWidthTop" value="0.1093380*cm"/>
+		<Constant name="SideWidthBottom" value="0.0839200*cm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ1]+[ShiftZ])"/>
+		<Constant name="DlHybrid" value="9.749*cm"/>
+		<Constant name="BridgeWidth" value="2.350*cm"/>
+		<Constant name="BridgeThick" value="0.194*cm"/>
+		<Constant name="BridgeHeight" value="1.3*cm"/>
+		<Constant name="BridgeSeparation" value="4.856*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickDS]"/>
+		<Constant name="ShiftZ" value="-([tecmodpar:ModuleThick]+[tecmodpar:GapModule])/2"/>
+		<Constant name="HybridZ" value="[ActiveZ]+ 0.5*(-[tecmodpar:WaferThick1] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[HybridZ]+ 0.5*([tecmodpar:HybridThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[TopFrameZ]+0.5*(-[tecmodpar:TopFrameThick]+[tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ] - 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="PitchWidth" value="87.8*mm"/>
+		<Constant name="TopFrameBotWidth" value="109.0*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[FullHeight]))"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule0.xml">
+		<Tubs name="TECModule0" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickDS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule0.xml">
+		<LogicalPart name="TECModule0" category="unspecified">
+			<rSolid name="tecmodule0:TECModule0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule0r.xml b/examples/DDCMS/data/tecmodule0r.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8a8123e21361390d79a0cbf5ffe15cfc2c78b267
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule0r.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <ConstantsSection label="tecmodule0r.xml" eval="true">
+  <Constant name="isStereo" value="0"/>
+  <Constant name="TopFrameTopWidth" value="84.6*mm"/>
+  <Constant name="TopFrameBotWidth" value="[tecmodule0:TopFrameBotWidth]"/>
+  <Constant name="TopFrameHeight" value="35.7*mm"/>
+  <Constant name="SideFrameRtheta" value=" 0.133*rad"/>
+  <Constant name="SideFrameRHeight" value="93.1*mm"/>
+  <Constant name="SideFrameRWidth" value="14.2*mm"/>
+  <Constant name="SideFrameLtheta" value="-.134*rad"/>
+  <Constant name="SideFrameLHeight" value="97.6*mm"/>
+  <Constant name="SideFrameLWidth" value="15.4*mm"/>
+  <Constant name="PosCorrectionR" value="-2.388*mm"/>
+ </ConstantsSection>
+ <Algorithm name="track:DDTECModuleAlgo">
+  <rParent name="tecmodule0:TECModule0"/>
+  <Numeric name="RingNo" value="0"/>
+  <Numeric name="isStereo" value="[isStereo]"/>
+  <String name="GeneralMaterial" value="materials:Air"/>
+  <Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+  <Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+  <Numeric name="FullHeight" value="[tecmodule0:FullHeight]"/>
+  <Numeric name="DlTop" value="[tecmodule0:DlTop]"/>
+  <Numeric name="DlBottom" value="[tecmodule0:DlBottom]"/>
+  <Numeric name="DlHybrid" value="[tecmodule0:DlHybrid]"/>
+  <String name="ActiveRotation" value="tecmodpar:AR05"/>
+  <Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+  <Numeric name="FrameThick" value="[tecmodule0:ModuleThick]"/>
+  <Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+  <String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+  <Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+  <Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+  <Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+  <Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+  <Numeric name="TopFrameZ" value="[tecmodule0:TopFrameZ]"/>
+  <String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_1_4"/>
+  <Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+  <String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+  <Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+  <Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+  <Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+  <Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+  <Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+  <Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+  <Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+  <Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="1">
+   43.6*mm  </Vector>
+  <Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="1">
+   30.1*mm  </Vector>
+  <Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="1">
+   15.8*mm  </Vector>
+  <Numeric name="SideFrameZ" value="[tecmodule0:SideFrameZ]"/>
+  <String name="WaferMaterial" value="materials:Silicon"/>
+  <Numeric name="SideWidthTop" value="[tecmodule0:SideWidthTop]"/>
+  <Numeric name="SideWidthBottom" value="[tecmodule0:SideWidthBottom]"/>
+  <String name="WaferRotation" value="tecmodpar:RPHI"/>
+  <String name="ActiveMaterial" value="materials:Silicon"/>
+  <Numeric name="ActiveHeight" value="[tecmodule0:ActiveHeight]"/>
+  <Numeric name="WaferThick" value="[tecmodpar:WaferThick1]"/>
+  <String name="ActiveRotation" value="tecmodpar:AR05"/>
+  <Numeric name="ActiveZ" value="[tecmodule0:ActiveZ]"/>
+  <Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+  <String name="HybridMaterial" value="tecmaterial:TEC_Hybrid6APV"/>
+  <Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+  <Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+  <Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+  <Numeric name="HybridZ" value="[tecmodule0:HybridZ]"/>
+  <String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+  <Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+  <Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+  <Numeric name="PitchWidth" value="[tecmodule0:PitchWidth]"/>
+  <Numeric name="PitchZ" value="[tecmodule0:PitchZ]"/>
+  <String name="PitchRotation" value="tecmodpar:PITC"/>
+  <Numeric name="BridgeWidth" value="[tecmodule0:BridgeWidth]"/>
+  <Numeric name="BridgeThick" value="[tecmodule0:BridgeThick]"/>
+  <Numeric name="BridgeHeight" value="[tecmodule0:BridgeHeight]"/>
+  <Numeric name="BridgeSeparation" value="[tecmodule0:BridgeSeparation]"/>
+  <String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+  <Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+  <Vector name="SiReenforcementHeight" type="numeric" nEntries="1">
+   4.5*mm  </Vector>
+  <Vector name="SiReenforcementWidth" type="numeric" nEntries="1">
+   74.0*mm  </Vector>
+  <Vector name="SiReenforcementPosY" type="numeric" nEntries="1">
+   0.0001*mm  </Vector>
+  <String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+  <Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+  <Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+  <Numeric name="RPos" value="0.5*([tecmodule0:Rin]+[tecmodule0:Rout])+[PosCorrectionR]"/>
+  <String name="StandardRotation" value="tecmodpar:RPHI"/>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule0s.xml b/examples/DDCMS/data/tecmodule0s.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f6e1dbb86d94daa3e1c3f093ffdcbcbc1b3bcf45
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule0s.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule0s.xml" eval="true">
+		<Constant name="isStereo" value="1"/>
+		<Constant name="TopFrameTopWidth" value="76.8*mm"/>
+		<Constant name="TopFrameBotWidth" value="111.0*mm"/>
+		<Constant name="TopFrameHeight" value="29.1*mm"/>
+		<Constant name="TopFrame2Width" value="111.0*mm"/>
+		<Constant name="TopFrame2LHeight" value="12.8*mm"/>
+		<Constant name="TopFrame2RHeight" value="1.8*mm"/>
+		<Constant name="SideFrameRtheta" value="0.172*rad"/>
+		<Constant name="SideFrameRHeight" value="92.8*mm"/>
+		<Constant name="SideFrameRWidthLow" value="10.1*mm"/>
+		<Constant name="SideFrameRWidth" value="21.5*mm"/>
+		<Constant name="SideFrameLtheta" value="-0.089*rad"/>
+		<Constant name="SideFrameLHeight" value="95.8*mm"/>
+		<Constant name="SideFrameLWidthLow" value="21.3*mm"/>
+		<Constant name="SideFrameLWidth" value="11.5*mm"/>
+		<Constant name="PosCorrectionR" value="-2.3878*mm"/>
+		<Constant name="PosCorrectionPhi" value="0.0000345*rad"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule0:TECModule0"/>
+		<Numeric name="RingNo" value="0"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tecmodule0:FullHeight]"/>
+		<Numeric name="DlTop" value="[tecmodule0:DlTop]"/>
+		<Numeric name="DlBottom" value="[tecmodule0:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tecmodule0:DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[tecmodule0:ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrame2Width" value="[TopFrame2Width]"/>
+		<Numeric name="TopFrame2LHeight" value="[TopFrame2LHeight]"/>
+		<Numeric name="TopFrame2RHeight" value="[TopFrame2RHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="-[tecmodule0:TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_1_4"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidthLow" value="[SideFrameRWidthLow]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidthLow" value="[SideFrameLWidthLow]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="1">
+			48.4*mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="1">
+			28.9*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="1">
+			14.8*mm  </Vector>
+		<Numeric name="SideFrameZ" value="-[tecmodule0:SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[tecmodule0:SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[tecmodule0:SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:STER"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tecmodule0:ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick1]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="-[tecmodule0:ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid6APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="-[tecmodule0:HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchStereoHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[tecmodule0:PitchWidth]"/>
+		<Numeric name="PitchZ" value="-[tecmodule0:PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[tecmodule0:BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[tecmodule0:BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[tecmodule0:BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[tecmodule0:BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="None"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="1">
+			4.7*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="1">
+			70.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="1">
+			2*mm  </Vector>
+		<!-- they to be placed right! (are not due to problems with mother volume thickness)-->
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule0:Rin]+[tecmodule0:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+		<Numeric name="PosCorrectionPhi" value="[PosCorrectionPhi]"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule1.xml b/examples/DDCMS/data/tecmodule1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5729c4432d904a6e29432663ba663a1f5e1b2462
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule1.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule1.xml" eval="true">
+		<Constant name="Rin" value="31.74*cm"/>
+		<Constant name="Rout" value="45.93*cm"/>
+		<Constant name="FullHeight" value="9.0236000*cm"/>
+		<Constant name="ActiveHeight" value="8.8160000*cm"/>
+		<Constant name="DlTop" value="11.2202000*cm"/>
+		<Constant name="DlBottom" value="8.8096000*cm"/>
+		<Constant name="SideWidthTop" value="0.1076928*cm"/>
+		<Constant name="SideWidthBottom" value="0.0822066*cm"/>
+		<Constant name="HybridZ" value="[ActiveZ]+0.5*(-[tecmodpar:WaferThick1] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[HybridZ]+0.5*([tecmodpar:HybridThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[TopFrameZ]+0.5*(-[tecmodpar:TopFrameThick]+[tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ]-0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="DlHybrid" value="12.240*cm"/>
+		<Constant name="BridgeWidth" value="2.479*cm"/>
+		<Constant name="BridgeThick" value="0.204*cm"/>
+		<Constant name="BridgeHeight" value="2.3460*cm"/>
+		<Constant name="BridgeSeparation" value="7.150*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickDS]"/>
+		<Constant name="ShiftZ" value="-([tecmodpar:ModuleThick]+                                             [tecmodpar:GapModule])/2"/>
+		<Constant name="TopFrameBotWidth" value="133.3*mm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ1]+[ShiftZ])"/>
+		<Constant name="PitchWidth" value="112.1*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[FullHeight]))"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule1.xml">
+		<Tubs name="TECModule1" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickDS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule1.xml">
+		<LogicalPart name="TECModule1" category="unspecified">
+			<rSolid name="tecmodule1:TECModule1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule1r.xml b/examples/DDCMS/data/tecmodule1r.xml
new file mode 100644
index 0000000000000000000000000000000000000000..360f1c0d75acc79ff9554c8ec4376a7ae3b3fdd7
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule1r.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule1r.xml" eval="true">
+		<Constant name="isStereo" value="0"/>
+		<Constant name="TopFrameTopWidth" value="95.6*mm"/>
+		<Constant name="TopFrameBotWidth" value="[tecmodule1:TopFrameBotWidth]"/>
+		<Constant name="TopFrameHeight" value="35.7*mm"/>
+		<Constant name="SideFrameRtheta" value="0.133*rad"/>
+		<Constant name="SideFrameRHeight" value="95.0*mm"/>
+		<Constant name="SideFrameRWidth" value="14.1*mm"/>
+		<Constant name="SideFrameLtheta" value="-0.133*rad"/>
+		<Constant name="SideFrameLHeight" value="99.2*mm"/>
+		<Constant name="SideFrameLWidth" value="16.7*mm"/>
+		<Constant name="PosCorrectionR" value="-2.668*mm"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule1:TECModule1"/>
+		<Numeric name="RingNo" value="1"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tecmodule1:FullHeight]"/>
+		<Numeric name="DlTop" value="[tecmodule1:DlTop]"/>
+		<Numeric name="DlBottom" value="[tecmodule1:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tecmodule1:DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[tecmodule1:ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="[tecmodule1:TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_1_4"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="1">
+			45.5*mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="1">
+			37.9*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="1">
+			15.9*mm  </Vector>
+		<Numeric name="SideFrameZ" value="[tecmodule1:SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[tecmodule1:SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[tecmodule1:SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:RPHI"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tecmodule1:ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick1]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="[tecmodule1:ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid6APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="[tecmodule1:HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[tecmodule1:PitchWidth]"/>
+		<Numeric name="PitchZ" value="[tecmodule1:PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[tecmodule1:BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[tecmodule1:BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[tecmodule1:BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[tecmodule1:BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="1">
+			4.5*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="1">
+			95.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="1">
+			0.0001*mm  </Vector>
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule1:Rin]+[tecmodule1:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule1s.xml b/examples/DDCMS/data/tecmodule1s.xml
new file mode 100644
index 0000000000000000000000000000000000000000..924922b630b4f345a67d902dfe376dffd9f478e6
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule1s.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule1s.xml" eval="true">
+		<Constant name="isStereo" value="1"/>
+		<Constant name="TopFrameTopWidth" value="87.0*mm"/>
+		<Constant name="TopFrameBotWidth" value="134.3*mm"/>
+		<Constant name="TopFrameHeight" value="29.7*mm"/>
+		<Constant name="TopFrame2Width" value="134.3*mm"/>
+		<Constant name="TopFrame2LHeight" value="13.3*mm"/>
+		<Constant name="TopFrame2RHeight" value="0.1*fm"/>
+		<Constant name="SideFrameRtheta" value="0.178*rad"/>
+		<Constant name="SideFrameRHeight" value="94.9*mm"/>
+		<Constant name="SideFrameRWidthLow" value="10.4*mm"/>
+		<Constant name="SideFrameRWidth" value="21.4*mm"/>
+		<Constant name="SideFrameLtheta" value="-0.081*rad"/>
+		<Constant name="SideFrameLHeight" value="95.0*mm"/>
+		<Constant name="SideFrameLWidthLow" value="21.2*mm"/>
+		<Constant name="SideFrameLWidth" value="11.6*mm"/>
+		<Constant name="PosCorrectionR" value="-2.668*mm"/>
+		<Constant name="PosCorrectionPhi" value="0.000461*rad"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule1:TECModule1"/>
+		<Numeric name="RingNo" value="1"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tecmodule1:FullHeight]"/>
+		<Numeric name="DlTop" value="[tecmodule1:DlTop]"/>
+		<Numeric name="DlBottom" value="[tecmodule1:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tecmodule1:DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[tecmodule1:ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrame2Width" value="[TopFrame2Width]"/>
+		<Numeric name="TopFrame2LHeight" value="[TopFrame2LHeight]"/>
+		<Numeric name="TopFrame2RHeight" value="[TopFrame2RHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="-[tecmodule1:TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_1_4"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidthLow" value="[SideFrameRWidthLow]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidthLow" value="[SideFrameLWidthLow]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="1">
+			50.7*mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="1">
+			30.8*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="1">
+			14.8*mm  </Vector>
+		<Numeric name="SideFrameZ" value="-[tecmodule1:SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[tecmodule1:SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[tecmodule1:SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:STER"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tecmodule1:ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick1]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="-[tecmodule1:ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid6APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="-[tecmodule1:HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchStereoHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[tecmodule1:PitchWidth]"/>
+		<Numeric name="PitchZ" value="-[tecmodule1:PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[tecmodule1:BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[tecmodule1:BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[tecmodule1:BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[tecmodule1:BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="None"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="1">
+			4.4*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="1">
+			94.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="1">
+			2*mm  </Vector>
+		<!-- they to be placed right! (are not due to problems with mother volume thickness)-->
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule1:Rin]+[tecmodule1:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+		<Numeric name="PosCorrectionPhi" value="-[PosCorrectionPhi]"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule2.xml b/examples/DDCMS/data/tecmodule2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d93b88011d211246352651ea50eb3b1b30568b5b
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule2.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule2.xml" eval="true">
+		<Constant name="Rin" value="38.77*cm"/>
+		<Constant name="Rout" value="54.70*cm"/>
+		<Constant name="isStereo" value="0"/>
+		<Constant name="FullHeight" value="11.2736000*cm"/>
+		<Constant name="ActiveHeight" value="11.0660000*cm"/>
+		<Constant name="DlTop" value="8.3012000*cm"/>
+		<Constant name="DlBottom" value="6.4904000*cm"/>
+		<Constant name="SideWidthTop" value="0.1006846*cm"/>
+		<Constant name="SideWidthBottom" value="0.0866913*cm"/>
+		<Constant name="HybridZ" value="[TopFrameZ]+ 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[SideFrameZ]+ 0.5*(-[tecmodpar:SideFrameThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[ActiveZ]+0.5*(-[tecmodpar:WaferThick1] - [tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ] + 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="DlHybrid" value="8.920*cm"/>
+		<Constant name="BridgeWidth" value="2.477*cm"/>
+		<Constant name="BridgeThick" value="0.209*cm"/>
+		<Constant name="BridgeHeight" value="2.53*cm"/>
+		<Constant name="BridgeSeparation" value="4.499*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickSS]"/>
+		<Constant name="ShiftZ" value="0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="TopFrameTopWidth" value="71.7*mm"/>
+		<Constant name="TopFrameBotWidth" value="103.7*mm"/>
+		<Constant name="TopFrameHeight" value="35.7*mm"/>
+		<Constant name="SideFrameRtheta" value="-0.081*rad"/>
+		<Constant name="SideFrameRHeight" value="119.6*mm"/>
+		<Constant name="SideFrameRWidth" value="13.9*mm"/>
+		<Constant name="SideFrameLtheta" value="0.081*rad"/>
+		<Constant name="SideFrameLHeight" value="119.6*mm"/>
+		<Constant name="SideFrameLWidth" value="15.2*mm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ1]+[ShiftZ])"/>
+		<Constant name="PitchWidth" value="83.2*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[FullHeight]))"/>
+		<Constant name="PosCorrectionR" value="-1.318*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule2.xml">
+		<Tubs name="TECModule2" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickSS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule2.xml">
+		<LogicalPart name="TECModule2" category="unspecified">
+			<rSolid name="tecmodule2:TECModule2"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule2:TECModule2"/>
+		<Numeric name="RingNo" value="2"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[FullHeight]"/>
+		<Numeric name="DlTop" value="[DlTop]"/>
+		<Numeric name="DlBottom" value="[DlBottom]"/>
+		<Numeric name="DlHybrid" value="[DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="[TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_1_4"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="1">
+			56.9*mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="1">
+			30.2*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="1">
+			15.8*mm  </Vector>
+		<Numeric name="SideFrameZ" value="[SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:RFI2"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick1]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="[ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid4APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="[HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[PitchWidth]"/>
+		<Numeric name="PitchZ" value="[PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="1">
+			4.7*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="1">
+			69.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="1">
+			0.0001*mm  </Vector>
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule2:Rin]+[tecmodule2:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule3.xml b/examples/DDCMS/data/tecmodule3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8a9f72e5b0814e405c21f995f4c5e46c261a7184
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule3.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule3.xml" eval="true">
+		<Constant name="Rin" value="50.00*cm"/>
+		<Constant name="Rout" value="66.242*cm"/>
+		<Constant name="isStereo" value="0"/>
+		<Constant name="FullHeight" value="11.7236000*cm"/>
+		<Constant name="ActiveHeight" value="11.5160000*cm"/>
+		<Constant name="DlTop" value="7.3179000*cm"/>
+		<Constant name="DlBottom" value="5.9730000*cm"/>
+		<Constant name="SideWidthTop" value="0.0979314*cm"/>
+		<Constant name="SideWidthBottom" value="0.0877023*cm"/>
+		<Constant name="HybridZ" value="[TopFrameZ]+ 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[SideFrameZ]+ 0.5*(-[tecmodpar:SideFrameThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[ActiveZ]+0.5*(-[tecmodpar:WaferThick1] - [tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ] + 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="DlHybrid" value="7.770*cm"/>
+		<Constant name="BridgeWidth" value="2.471*cm"/>
+		<Constant name="BridgeThick" value="0.212*cm"/>
+		<Constant name="BridgeHeight" value="1.988*cm"/>
+		<Constant name="BridgeSeparation" value="3.750*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickSS]"/>
+		<Constant name="ShiftZ" value="0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="TopFrameTopWidth" value="88.9*mm"/>
+		<Constant name="TopFrameBotWidth" value="93.7*mm"/>
+		<Constant name="TopFrameHeight" value="35.7*mm"/>
+		<Constant name="SideFrameRtheta" value="-0.058*rad"/>
+		<Constant name="SideFrameRHeight" value="122.1*mm"/>
+		<Constant name="SideFrameRWidth" value="14.0*mm"/>
+		<Constant name="SideFrameLtheta" value="0.057*rad"/>
+		<Constant name="SideFrameLHeight" value="122.1*mm"/>
+		<Constant name="SideFrameLWidth" value="15.2*mm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ1]+[ShiftZ])"/>
+		<Constant name="PitchWidth" value="73.3*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[FullHeight]))"/>
+		<Constant name="PosCorrectionR" value="-0.8287*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule3.xml">
+		<Tubs name="TECModule3" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickSS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule3.xml">
+		<LogicalPart name="TECModule3" category="unspecified">
+			<rSolid name="tecmodule3:TECModule3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule3:TECModule3"/>
+		<Numeric name="RingNo" value="3"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[FullHeight]"/>
+		<Numeric name="DlTop" value="[DlTop]"/>
+		<Numeric name="DlBottom" value="[DlBottom]"/>
+		<Numeric name="DlHybrid" value="[DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="[TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_1_4"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="1">
+			59.3 *mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="1">
+			30.3*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="1">
+			15.8*mm  </Vector>
+		<Numeric name="SideFrameZ" value="[SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:RFI2"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick1]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="[ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid4APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="[HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[PitchWidth]"/>
+		<Numeric name="PitchZ" value="[PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="1">
+			4.8*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="1">
+			61.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="1">
+			0.0001*mm  </Vector>
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule3:Rin]+[tecmodule3:Rout])-0.8287*mm"/>
+		<Numeric name="RPos" value="0.5*([tecmodule3:Rin]+[tecmodule3:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule4.xml b/examples/DDCMS/data/tecmodule4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..343eee586c0c533bdb7a86b6347f4faaea063e41
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule4.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule4.xml" eval="true">
+		<Constant name="Rin" value="59.67*cm"/>
+		<Constant name="Rout" value="79.76*cm"/>
+		<Constant name="FullHeight" value="15.0029000*cm"/>
+		<Constant name="ActiveHeight" value="14.7262500*cm"/>
+		<Constant name="DlTop" value="12.2914000*cm"/>
+		<Constant name="DlBottom" value="9.8952000*cm"/>
+		<Constant name="InactiveStart" value="65.983*mm"/>
+		<Constant name="SideWidthTop" value="0.1431406*cm"/>
+		<Constant name="SideWidthBottom" value="0.1229168*cm"/>
+		<Constant name="HybridZ" value="[ActiveZ]+ 0.5*(-[tecmodpar:WaferThick2] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[HybridZ]+ 0.5*([tecmodpar:HybridThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[TopFrameZ]+0.5*(-[tecmodpar:TopFrameThick]+[tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ] - 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="DlHybrid" value="12.900*cm"/>
+		<Constant name="BridgeWidth" value="2.475*cm"/>
+		<Constant name="BridgeThick" value="0.176*cm"/>
+		<Constant name="BridgeHeight" value="2.60*cm"/>
+		<Constant name="BridgeSeparation" value="8.300*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickDS]"/>
+		<Constant name="ShiftZ" value="-([tecmodpar:ModuleThick]+                                             [tecmodpar:GapModule])/2"/>
+		<Constant name="TopFrameBotWidth" value="143.3*mm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ2]+[ShiftZ])"/>
+		<Constant name="PitchWidth" value="122.6*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[FullHeight]))"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule4.xml">
+		<Tubs name="TECModule4" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickDS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule4.xml">
+		<LogicalPart name="TECModule4" category="unspecified">
+			<rSolid name="tecmodule4:TECModule4"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule4r.xml b/examples/DDCMS/data/tecmodule4r.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cf0b2e804239c6338c4b9ebded1f24390bee120e
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule4r.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule4r.xml" eval="true">
+		<Constant name="isStereo" value="0"/>
+		<Constant name="TopFrameTopWidth" value="95.6*mm"/>
+		<Constant name="TopFrameBotWidth" value="[tecmodule4:TopFrameBotWidth]"/>
+		<Constant name="TopFrameHeight" value="37.2*mm"/>
+		<Constant name="SideFrameRtheta" value="0.080*rad"/>
+		<Constant name="SideFrameRHeight" value="158.9*mm"/>
+		<Constant name="SideFrameRWidth" value="14.5*mm"/>
+		<Constant name="SideFrameLtheta" value="-0.080*rad"/>
+		<Constant name="SideFrameLHeight" value="159.0*mm"/>
+		<Constant name="SideFrameLWidth" value="16.4*mm"/>
+		<Constant name="PosCorrectionR" value="-1.664*mm"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule4:TECModule4"/>
+		<Numeric name="RingNo" value="4"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tecmodule4:FullHeight]"/>
+		<Numeric name="DlTop" value="[tecmodule4:DlTop]"/>
+		<Numeric name="DlBottom" value="[tecmodule4:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tecmodule4:DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[tecmodule4:ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="[tecmodule4:TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_5_7"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="2">
+			37.8*mm, 112.3*mm </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="2">
+			30.7*mm, 26.5*mm </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="2">
+			16.0*mm, 15.2*mm </Vector>
+		<Numeric name="SideFrameZ" value="[tecmodule4:SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[tecmodule4:SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[tecmodule4:SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:RPHI"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tecmodule4:ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick2]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="[tecmodule4:ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<Numeric name="InactiveDy" value="[tecmodpar:InactiveDy]"/>
+		<Numeric name="InactivePos" value="[tecmodule4:InactiveStart]+[tecmodpar:InactiveDy]"/>
+		<String name="InactiveMaterial" value="materials:Silicon"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid6APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="[tecmodule4:HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[tecmodule4:PitchWidth]"/>
+		<Numeric name="PitchZ" value="[tecmodule4:PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[tecmodule4:BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[tecmodule4:BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[tecmodule4:BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[tecmodule4:BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="2">
+			4.51*mm, 8.1*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="2">
+			102.0*mm, 98.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="2">
+			0.0001*mm, [tecmodule4:InactiveStart] </Vector>
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule4:Rin]+[tecmodule4:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule4s.xml b/examples/DDCMS/data/tecmodule4s.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7b6a90020e24d58c092d9b0dc1f6b7690e656b44
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule4s.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule4s.xml" eval="true">
+		<Constant name="isStereo" value="1"/>
+		<Constant name="TopFrameTopWidth" value="90.7*mm"/>
+		<Constant name="TopFrameBotWidth" value="145.3*mm"/>
+		<Constant name="TopFrameHeight" value="25.6*mm"/>
+		<Constant name="TopFrame2Width" value="121.7*mm"/>
+		<Constant name="TopFrame2LHeight" value="19.4*mm"/>
+		<Constant name="TopFrame2RHeight" value="7.3*mm"/>
+		<Constant name="SideFrameRtheta" value="0.139*rad"/>
+		<Constant name="SideFrameRHeight" value="153.4*mm"/>
+		<Constant name="SideFrameRWidthLow" value="7.8*mm"/>
+		<Constant name="SideFrameRWidth" value="21.8*mm"/>
+		<Constant name="SideFrameLtheta" value="-0.047*rad"/>
+		<Constant name="SideFrameLHeight" value="153.4*mm"/>
+		<Constant name="SideFrameLWidthLow" value="21.1*mm"/>
+		<Constant name="SideFrameLWidth" value="10.8*mm"/>
+		<Constant name="PosCorrectionR" value="-1.664*mm"/>
+		<Constant name="PosCorrectionPhi" value="-0.0003755*rad"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule4:TECModule4"/>
+		<Numeric name="RingNo" value="4"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tecmodule4:FullHeight]"/>
+		<Numeric name="DlTop" value="[tecmodule4:DlTop]"/>
+		<Numeric name="DlBottom" value="[tecmodule4:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tecmodule4:DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[tecmodule4:ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrame2Width" value="[TopFrame2Width]"/>
+		<Numeric name="TopFrame2LHeight" value="[TopFrame2LHeight]"/>
+		<Numeric name="TopFrame2RHeight" value="[TopFrame2RHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="-[tecmodule4:TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_5_7"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidthLow" value="[SideFrameRWidthLow]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidthLow" value="[SideFrameLWidthLow]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="2">
+			34.4*mm, 110.5*mm </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="2">
+			33.1*mm, 26.3*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="2">
+			16.2*mm, 15.3*mm  </Vector>
+		<Numeric name="SideFrameZ" value="-[tecmodule4:SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[tecmodule4:SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[tecmodule4:SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:STER"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tecmodule4:ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick2]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="-[tecmodule4:ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<Numeric name="InactiveDy" value="[tecmodpar:InactiveDy]"/>
+		<Numeric name="InactivePos" value="[tecmodule4:InactiveStart]+[tecmodpar:InactiveDy]"/>
+		<String name="InactiveMaterial" value="materials:Silicon"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid6APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="-[tecmodule4:HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchStereoHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[tecmodule4:PitchWidth]"/>
+		<Numeric name="PitchZ" value="-[tecmodule4:PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[tecmodule4:BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[tecmodule4:BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[tecmodule4:BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[tecmodule4:BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="None"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="2">
+			4.4*mm, 8.47*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="2">
+			106.0*mm, 94.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="2">
+			2.*mm, [tecmodule4:InactiveStart]-8.47*mm/2 </Vector>
+		<!-- they to be placed right! (are not due to problems with mother volume thickness)-->
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule4:Rin]+[tecmodule4:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+		<Numeric name="PosCorrectionPhi" value="[PosCorrectionPhi]"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule5.xml b/examples/DDCMS/data/tecmodule5.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fdc2102aa53c904c569d9e1a43c2c73ef3f74349
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule5.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule5.xml" eval="true">
+		<Constant name="Rin" value="72.11*cm"/>
+		<Constant name="Rout" value="95.61*cm"/>
+		<Constant name="isStereo" value="0"/>
+		<Constant name="FullHeight" value="18.6980000*cm"/>
+		<Constant name="ActiveHeight" value="18.4088000*cm"/>
+		<Constant name="DlTop" value="10.7285000*cm"/>
+		<Constant name="DlBottom" value="8.6184000*cm"/>
+		<Constant name="InactiveStart" value="87.840*mm"/>
+		<Constant name="SideWidthTop" value="0.1287673*cm"/>
+		<Constant name="SideWidthBottom" value="0.1315619*cm"/>
+		<!--Constant name="HybridZ"            value="[ActiveZ]+ 0.5*(-[tecmodpar:WaferThick2] + [tecmodpar:HybridThick])"/>
+		     <Constant name="TopFrameZ"          value="[HybridZ]+ 0.5*([tecmodpar:HybridThick]+[tecmodpar:TopFrameThick])"/>
+		     <Constant name="SideFrameZ"         value="[TopFrameZ]+0.5*(-[tecmodpar:TopFrameThick]+[tecmodpar:SideFrameThick])"/>
+		     <Constant name="PitchZ"             value="[TopFrameZ] - 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/-->
+		<Constant name="HybridZ" value="[TopFrameZ]+ 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[SideFrameZ]+ 0.5*(-[tecmodpar:SideFrameThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[ActiveZ]+0.5*(-[tecmodpar:WaferThick2] - [tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ] + 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="DlHybrid" value="11.190*cm"/>
+		<Constant name="BridgeWidth" value="1.90*cm"/>
+		<Constant name="BridgeThick" value="0.228*cm"/>
+		<Constant name="BridgeHeight" value="2.469*cm"/>
+		<Constant name="BridgeSeparation" value="6.800*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickSS]"/>
+		<Constant name="ShiftZ" value="0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="TopFrameTopWidth" value="89.3*mm"/>
+		<Constant name="TopFrameBotWidth" value="127.8*mm"/>
+		<Constant name="TopFrameHeight" value="37.2*mm"/>
+		<Constant name="SideFrameRtheta" value="-0.058*rad"/>
+		<Constant name="SideFrameRHeight" value="190.0*mm"/>
+		<Constant name="SideFrameRWidth" value="14.1*mm"/>
+		<Constant name="SideFrameLtheta" value="0.057*rad"/>
+		<Constant name="SideFrameLHeight" value="190.0*mm"/>
+		<Constant name="SideFrameLWidth" value="15.5*mm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ2]+[ShiftZ])"/>
+		<Constant name="PitchWidth" value="107.6*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[FullHeight]))"/>
+		<Constant name="PosCorrectionR" value="-1.19*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule5.xml">
+		<Tubs name="TECModule5" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickSS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule5.xml">
+		<LogicalPart name="TECModule5" category="unspecified">
+			<rSolid name="tecmodule5:TECModule5"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule5:TECModule5"/>
+		<Numeric name="RingNo" value="5"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[FullHeight]"/>
+		<Numeric name="DlTop" value="[DlTop]"/>
+		<Numeric name="DlBottom" value="[DlBottom]"/>
+		<Numeric name="DlHybrid" value="[DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="[TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_5_7"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="2">
+			44.0*mm, 137.9*mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="2">
+			31.1*mm, 27.1*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="2">
+			15.7*mm, 15.7*mm  </Vector>
+		<Numeric name="SideFrameZ" value="[SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:RFI2"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick2]"/>
+		<String name="ActiveRotation" value="tecmodpar:AR05"/>
+		<Numeric name="ActiveZ" value="[ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<Numeric name="InactiveDy" value="[tecmodpar:InactiveDy]"/>
+		<Numeric name="InactivePos" value="[tecmodule5:InactiveStart]+[tecmodpar:InactiveDy]"/>
+		<String name="InactiveMaterial" value="materials:Silicon"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid4APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="[HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[PitchWidth]"/>
+		<Numeric name="PitchZ" value="[PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="2">
+			4.5*mm, 8.0*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="2">
+			95.0*mm, 85.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="2">
+			0.0001*mm, [tecmodule5:InactiveStart] - 8.00*mm /2</Vector>
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule5:Rin]+[tecmodule5:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecmodule6.xml b/examples/DDCMS/data/tecmodule6.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cec2f9cf378d9f1b08076b1824fe48e1a5e2097f
--- /dev/null
+++ b/examples/DDCMS/data/tecmodule6.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecmodule6.xml" eval="true">
+		<Constant name="Rin" value="84.61*cm"/>
+		<Constant name="Rout" value="110.17*cm"/>
+		<Constant name="isStereo" value="0"/>
+		<Constant name="FullHeight" value="20.7474000*cm"/>
+		<Constant name="ActiveHeight" value="20.4715500*cm"/>
+		<Constant name="DlTop" value="9.0713000*cm"/>
+		<Constant name="DlBottom" value="7.4012000*cm"/>
+		<Constant name="InactiveStart" value="109.712*mm"/>
+		<Constant name="SideWidthTop" value="0.1376009*cm"/>
+		<Constant name="SideWidthBottom" value="0.1262048*cm"/>
+		<Constant name="HybridZ" value="[TopFrameZ]+ 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:HybridThick])"/>
+		<Constant name="TopFrameZ" value="[SideFrameZ]+ 0.5*(-[tecmodpar:SideFrameThick]+[tecmodpar:TopFrameThick])"/>
+		<Constant name="SideFrameZ" value="[ActiveZ]+0.5*(-[tecmodpar:WaferThick2] - [tecmodpar:SideFrameThick])"/>
+		<Constant name="PitchZ" value="[TopFrameZ] + 0.5*([tecmodpar:TopFrameThick] + [tecmodpar:PitchThick])"/>
+		<Constant name="DlHybrid" value="7.120*cm"/>
+		<Constant name="BridgeWidth" value="2.474*cm"/>
+		<Constant name="BridgeThick" value="0.224*cm"/>
+		<Constant name="BridgeHeight" value="1.888*cm"/>
+		<Constant name="BridgeSeparation" value="5.350*cm"/>
+		<Constant name="ModuleThick" value="[tecmodpar:ModuleThickSS]"/>
+		<Constant name="TopFrameTopWidth" value="77.1*mm"/>
+		<Constant name="TopFrameBotWidth" value="94.2*mm"/>
+		<Constant name="TopFrameHeight" value="37.2*mm"/>
+		<Constant name="ShiftZ" value="0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="SideFrameRtheta" value="-0.040*rad"/>
+		<Constant name="SideFrameRHeight" value="210.8*mm"/>
+		<Constant name="SideFrameRWidth" value="13.9*mm"/>
+		<Constant name="SideFrameLtheta" value="0.040*rad"/>
+		<Constant name="SideFrameLHeight" value="210.8*mm"/>
+		<Constant name="SideFrameLWidth" value="15.3*mm"/>
+		<Constant name="ActiveZ" value="([tecmodpar:ActiveZ2]+[ShiftZ])"/>
+		<Constant name="PitchWidth" value="74.1*mm"/>
+		<Constant name="dPhi" value="2.2*asin(0.5*[TopFrameBotWidth]/([Rin]+[TopFrameHeight]))"/>
+		<Constant name="PosCorrectionR" value="-1.8632*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tecmodule6.xml">
+		<Tubs name="TECModule6" rMin="[Rin]" rMax="[Rout]" dz="0.5*[tecmodpar:ModuleThickSS]" startPhi="-[dPhi]/2" deltaPhi="[dPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecmodule6.xml">
+		<LogicalPart name="TECModule6" category="unspecified">
+			<rSolid name="tecmodule6:TECModule6"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECModuleAlgo">
+		<rParent name="tecmodule6:TECModule6"/>
+		<Numeric name="RingNo" value="6"/>
+		<Numeric name="isStereo" value="[isStereo]"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="ModuleThick" value="[tecmodpar:ModuleThick]"/>
+		<Numeric name="DetTilt" value="[tecmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[FullHeight]"/>
+		<Numeric name="DlTop" value="[DlTop]"/>
+		<Numeric name="DlBottom" value="[DlBottom]"/>
+		<Numeric name="DlHybrid" value="[DlHybrid]"/>
+		<Numeric name="FrameWidth" value="[tecmodpar:FrameWidth]"/>
+		<Numeric name="FrameThick" value="[ModuleThick]"/>
+		<Numeric name="FrameOver" value="[tecmodpar:FrameOver]"/>
+		<String name="TopFrameMaterial" value="tecmaterial:TEC_frame_top"/>
+		<Numeric name="TopFrameTopWidth" value="[TopFrameTopWidth]"/>
+		<Numeric name="TopFrameBotWidth" value="[TopFrameBotWidth]"/>
+		<Numeric name="TopFrameHeight" value="[TopFrameHeight]"/>
+		<Numeric name="TopFrameThick" value="[tecmodpar:TopFrameThick]"/>
+		<Numeric name="TopFrameZ" value="[TopFrameZ]"/>
+		<String name="SideFrameMaterial" value="tecmaterial:TEC_frame_side_5_7"/>
+		<Numeric name="SideFrameThick" value="[tecmodpar:SideFrameThick]"/>
+		<String name="SiFrSuppBoxMaterial" value="tecmaterial:TEC_SideFrSupBox"/>
+		<Numeric name="SideFrameRtheta" value="[SideFrameRtheta]"/>
+		<Numeric name="SideFrameRHeight" value="[SideFrameRHeight]"/>
+		<Numeric name="SideFrameRWidth" value="[SideFrameRWidth]"/>
+		<Numeric name="SideFrameLtheta" value="[SideFrameLtheta]"/>
+		<Numeric name="SideFrameLHeight" value="[SideFrameLHeight]"/>
+		<Numeric name="SideFrameLWidth" value="[SideFrameLWidth]"/>
+		<Numeric name="SiFrSuppBoxThick" value="[tecmodpar:SiFrSuppBoxThick]"/>
+		<Vector name="SiFrSuppBoxYPos" type="numeric" nEntries="2">
+			57.8*mm,161.9*mm  </Vector>
+		<Vector name="SiFrSuppBoxHeight" type="numeric" nEntries="2">
+			31.9*mm,27.6*mm  </Vector>
+		<Vector name="SiFrSuppBoxWidth" type="numeric" nEntries="2">
+			15.7*mm,15.7*mm  </Vector>
+		<Numeric name="SideFrameZ" value="[SideFrameZ]"/>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<String name="WaferRotation" value="tecmodpar:RFI2"/>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[ActiveHeight]"/>
+		<Numeric name="WaferThick" value="[tecmodpar:WaferThick2]"/>
+		<String name="ActiveRotation" value="tecmodpar:ART6"/>
+		<Numeric name="ActiveZ" value="[ActiveZ]"/>
+		<Numeric name="BackPlaneThick" value="2*[tracker:BackPlaneDz]"/>
+		<Numeric name="InactiveDy" value="[tecmodpar:InactiveDy]"/>
+		<Numeric name="InactivePos" value="[tecmodule6:InactiveStart]+[tecmodpar:InactiveDy]"/>
+		<String name="InactiveMaterial" value="materials:Silicon"/>
+		<String name="HybridMaterial" value="tecmaterial:TEC_Hybrid4APV"/>
+		<Numeric name="HybridHeight" value="[tecmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tecmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tecmodpar:HybridThick]"/>
+		<Numeric name="HybridZ" value="[HybridZ]"/>
+		<String name="PitchMaterial" value="tecmaterial:TEC_PitchAdapter"/>
+		<Numeric name="PitchHeight" value="[tecmodpar:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tecmodpar:PitchThick]"/>
+		<Numeric name="PitchWidth" value="[PitchWidth]"/>
+		<Numeric name="PitchZ" value="[PitchZ]"/>
+		<String name="PitchRotation" value="tecmodpar:PITC"/>
+		<Numeric name="BridgeWidth" value="[BridgeWidth]"/>
+		<Numeric name="BridgeThick" value="[BridgeThick]"/>
+		<Numeric name="BridgeHeight" value="[BridgeHeight]"/>
+		<Numeric name="BridgeSeparation" value="[BridgeSeparation]"/>
+		<String name="BridgeMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="WaferPosition" value="[tecmodpar:TopFrameHeight]"/>
+		<Vector name="SiReenforcementHeight" type="numeric" nEntries="2">
+			4.9*mm, 8.0*mm  </Vector>
+		<Vector name="SiReenforcementWidth" type="numeric" nEntries="2">
+			61.0*mm, 71.0*mm  </Vector>
+		<Vector name="SiReenforcementPosY" type="numeric" nEntries="2">
+			0.0001*mm, [tecmodule6:InactiveStart] -8.0*mm/2 </Vector>
+		<String name="SiReenforcementMaterial" value="tecmaterial:TEC_SiReenforcment"/>
+		<Numeric name="SiReenforcementThick" value="[tecmodpar:SiReenforcementThick]"/>
+		<Numeric name="NoOverlapShift" value="[tecmodpar:NoOverlapShift]"/>
+		<Numeric name="RPos" value="0.5*([tecmodule6:Rin]+[tecmodule6:Rout])+[PosCorrectionR]"/>
+		<String name="StandardRotation" value="tecmodpar:RPHI"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal0.xml b/examples/DDCMS/data/tecpetal0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..454621bccf2e8247e00b1d6b3a934bcd3cedec01
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal0.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal0.xml" eval="true">
+		<Constant name="PetalContRmin" value="22.90*cm"/>
+		<Constant name="PetalRmin" value="23.30*cm"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal0.xml">
+		<Tubs name="TECPetalCont0" rMin="[PetalContRmin]" rMax="[tecpetpar:PetalContRmax]" dz="[tecpetpar:PetalContThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+		<Tubs name="TECPetal0" rMin="[PetalRmin]" rMax="[tecpetpar:PetalRmax]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetpar:PetalWidth]/2" deltaPhi="[tecpetpar:PetalWidth]"/>
+		<Tubs name="TECICBCont0" rMin="[PetalRmin]" rMax="[tecpetpar:ICBRmax]" dz="[tecpetpar:ICBThick]/2" startPhi="-[tecpetpar:ICBWidth]/2" deltaPhi="[tecpetpar:ICBWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal0b.xml b/examples/DDCMS/data/tecpetal0b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9bc402e1cbc9afd3d8e362e0733e31e3190fad78
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal0b.xml
@@ -0,0 +1,445 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal0b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal0b.xml">
+		<Tubs name="TECPetal0B" rMin="[tecpetal0:PetalRmin]" rMax="[tecpetalb:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalb:PetalWidth0]/2" deltaPhi="[tecpetalb:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal0b.xml">
+		<LogicalPart name="TECPetalCont0B" category="unspecified">
+			<rSolid name="tecpetal0:TECPetalCont0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame0B" category="unspecified">
+			<rSolid name="tecpetal0:TECPetal0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal0B" category="unspecified">
+			<rSolid name="tecpetal0b:TECPetal0B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal1B" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal1B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal2B" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal2B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont0B1" category="unspecified">
+			<rSolid name="tecpetal0:TECICBCont0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont0B2" category="unspecified">
+			<rSolid name="tecpetal0:TECICBCont0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal0b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring0b:TECRing0B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring0:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring1b:TECRing1B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring1:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring2b:TECRing2B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring2:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring3b:TECRing3B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring4b:TECRing4B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring5b:TECRing5B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecring6b:TECRing6B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecpetal0b:TECPetalFrame0B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC0LB1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC0LB2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC2B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC2B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC46B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC46B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B1"/>
+			<rChild name="tecpetalb:TECICC46B3"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC1B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC1B2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC1B3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC35B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC35B2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC35B3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC35B4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecpetalb:TECICC35B5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal0b:TECPetal2B"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalFrame0B"/>
+			<rChild name="tecpetal0b:TECPetal0B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalFrame0B"/>
+			<rChild name="tecpetal0b:TECPetal1B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalFrame0B"/>
+			<rChild name="tecpetal0b:TECPetal2B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecpetal0b:TECICBCont0B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECPetalCont0B"/>
+			<rChild name="tecpetal0b:TECICBCont0B2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecwheel:TECCCUM"/>
+			<Translation x="1050*mm" y="-100*mm" z="[tecpetpar:CCUMZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal0b:TECICBCont0B2"/>
+			<rChild name="tecwheel:TECCCUM"/>
+			<Translation x="700*mm" y="[zero]" z="[tecpetpar:CCUMZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="283.326*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			8.9423*deg	,-8.9423*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<Numeric name="RPosition" value="348.172*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			6.1003*deg	,-6.1003*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<Numeric name="RPosition" value="372.842*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.9517*deg	,8.6238*deg	,-8.6238*deg	,-10.9554*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.8385*deg	,-4.8385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="11"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.9308*deg	,0.9308*deg	,-9.9308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="14"/>
+		<Numeric name="RPosition" value="491.272*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.829*deg	,-2.1851*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal0B"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9*deg	,0*deg	,-9*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal1B"/>
+		<Numeric name="StartCopyNo" value="19"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.3812*deg	,3.9526*deg	,-3.9526*deg	,-10.3812*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal1B"/>
+		<Numeric name="StartCopyNo" value="23"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,3.2143*deg	,-3.2143*deg	,-9.6429*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal1B"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.144*deg	,5.144*deg	,-5.144*deg	,-14.144*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal1B"/>
+		<Numeric name="StartCopyNo" value="31"/>
+		<Numeric name="RPosition" value="705.35*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			5.0584*deg	,-3.2876*deg	,-7.7907*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="34"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.727*deg	,6.273*deg	,2.727*deg	,-2.727*deg	,-6.273*deg	,-11.727*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="40"/>
+		<Numeric name="RPosition" value="809.853*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="11">
+			11.729*deg	,9.3832*deg	,7.0374*deg	,4.6916*deg	,2.3458*deg	,0*deg	,-2.3458*deg	,-4.6916*deg	,-7.0374*deg	,-9.3832*deg	,-11.729*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="11">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="51"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.1935*deg	,3.7649*deg	,-3.7649*deg	,-10.1935*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="55"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="61"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			8.6894*deg	,4.1677*deg	,2.2608*deg	,-2.2608*deg	,-4.1677*deg	,-8.6894*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="67"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,6.3017*deg	,2.6983*deg	,-1.8017*deg	,-2.6983*deg	,-6.3017*deg	,-7.1983*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="75"/>
+		<Numeric name="RPosition" value="1040.55*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0576*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0b:TECPetal2B"/>
+		<Numeric name="StartCopyNo" value="76"/>
+		<Numeric name="RPosition" value="1068.17*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0624*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B1"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybridShort"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="Rpos" value="357.959*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="2">
+			11.4354*deg	,-7.7539*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B2"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="471.195*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="2">
+			6.6727*deg	,-0.339*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B1"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="562.517*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="2">
+			5.4762*deg	,-2.429*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B2"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.152*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			6.3214*deg	,-2.0241*deg	,-6.5265*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B1"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.452*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="11">
+			12.7924*deg	,10.4466*deg	,8.1008*deg	,5.755*deg	,3.4092*deg	,1.0634*deg	,-1.2824*deg	,-3.6282*deg	,-5.974*deg	,-8.3197*deg	,-10.6655*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B2"/>
+		<Numeric name="StartCopyNo" value="21"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.634*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			7.1858*deg	,-0.9183*deg	,-6.3149*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0b:TECICBCont0B2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<String name="ChildName" value="tecpetpar:TECDigiOptoHybModule"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:DOHMWidth]"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:DOHMHeight]"/>
+		<Numeric name="Rpos" value="1022.726*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:DOHMZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			11.372*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal0f.xml b/examples/DDCMS/data/tecpetal0f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6321887fce763daa98981641f4466d74d123ecb5
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal0f.xml
@@ -0,0 +1,445 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal0f.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal0f.xml">
+		<Tubs name="TECPetal0F" rMin="[tecpetal0:PetalRmin]" rMax="[tecpetalf:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalf:PetalWidth0]/2" deltaPhi="[tecpetalf:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal0f.xml">
+		<LogicalPart name="TECPetalCont0F" category="unspecified">
+			<rSolid name="tecpetal0:TECPetalCont0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame0F" category="unspecified">
+			<rSolid name="tecpetal0:TECPetal0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal0F" category="unspecified">
+			<rSolid name="tecpetal0f:TECPetal0F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal1F" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal1F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal2F" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal2F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont0F1" category="unspecified">
+			<rSolid name="tecpetal0:TECICBCont0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont0F2" category="unspecified">
+			<rSolid name="tecpetal0:TECICBCont0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal0f.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring0f:TECRing0F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring0:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring1f:TECRing1F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring1:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring2f:TECRing2F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring2:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring3f:TECRing3F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring4f:TECRing4F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring5f:TECRing5F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecring6f:TECRing6F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecpetal0f:TECPetalFrame0F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalFrame0F"/>
+			<rChild name="tecpetal0f:TECPetal0F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalFrame0F"/>
+			<rChild name="tecpetal0f:TECPetal1F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalFrame0F"/>
+			<rChild name="tecpetal0f:TECPetal2F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecpetal0f:TECICBCont0F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetalCont0F"/>
+			<rChild name="tecpetal0f:TECICBCont0F2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F1"/>
+			<rChild name="tecpetalf:TECICC0F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F1"/>
+			<rChild name="tecpetalf:TECICC0F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F1"/>
+			<rChild name="tecpetalf:TECICC2F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F1"/>
+			<rChild name="tecpetalf:TECICC2F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F1"/>
+			<rChild name="tecpetalf:TECICC46F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F1"/>
+			<rChild name="tecpetalf:TECICC46F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC01LF1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC01LF2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC01LF3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC01LF4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC35F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC35F2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC35F3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC35F4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecpetalf:TECICC35F5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECPetal2F"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecwheel:TECCCUM"/>
+			<Translation x="1050*mm" y="100*mm" z="[tecpetpar:CCUMZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal0f:TECICBCont0F2"/>
+			<rChild name="tecwheel:TECCCUM"/>
+			<Translation x="700*mm" y="[zero]" z="[tecpetpar:CCUMZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="283.326*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="7">
+			16.4423*deg	,12.3634*deg	,4.3695*deg	,-1.4423*deg	,-5.5235*deg	,-13.5079*deg	,-16.4423*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="7">
+			tecpetpar:TECCool3,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool3,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="8"/>
+		<Numeric name="RPosition" value="348.172*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			13.6003*deg	,1.3997*deg	,-1.3997*deg	,-13.6003*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="373.084*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			16.1238*deg	,1.1238*deg	,-16.1238*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="15"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			12.3385*deg	,2.6615*deg	,-2.6615*deg	,-12.3385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="19"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.4308*deg	,5.4308*deg	,-5.4308*deg	,-14.4308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="23"/>
+		<Numeric name="RPosition" value="491.326*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,5.2432*deg	,-5.3537*deg	,-9.7534*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal0F"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			13.5*deg	,4.5*deg	,-4.5*deg	,-13.5*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="31"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="7">
+			13.5955*deg	,9.3071*deg	,5.6902*deg	,0.7383*deg	,-7.1669*deg	,-8.7012*deg	,-13.5955*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="7">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="38"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			12.8571*deg	,6.4286*deg	,0*deg	,-6.4286*deg	,-12.8571*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="43"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.644*deg	,-0.644*deg	,-9.644*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="46"/>
+		<Numeric name="RPosition" value="705.393*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			8.0585*deg	,2.4756*deg	,-5.2453*deg	,-11.2274*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="50"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			7.227*deg	,1.773*deg	,-1.773*deg	,-7.227*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="54"/>
+		<Numeric name="RPosition" value="809.358*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="9">
+			8.8981*deg	,6.5507*deg	,4.2142*deg	,1.8718*deg	,-0.4758*deg	,-2.8175*deg	,-5.1527*deg	,-7.4972*deg	,-9.8497*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="9">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			13.4078*deg	,5.8779*deg	,0.5506*deg	,-6.9792*deg	,-13.4078*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal1F"/>
+		<Numeric name="StartCopyNo" value="68"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal2F"/>
+		<Numeric name="StartCopyNo" value="74"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.9037*deg	,7.382*deg	,5.4751*deg	,0.9535*deg	,-0.9535*deg	,-5.4751*deg	,-7.382*deg	,-11.9037*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal2F"/>
+		<Numeric name="StartCopyNo" value="82"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,7.1983*deg	,6.3017*deg	,2.6983*deg	,-2.6983*deg	,-6.3017*deg	,-10.1082*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal2F"/>
+		<Numeric name="StartCopyNo" value="90"/>
+		<Numeric name="RPosition" value="1037.61*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9912*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal0f:TECPetal2F"/>
+		<Numeric name="StartCopyNo" value="91"/>
+		<Numeric name="RPosition" value="1065.23*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9978*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="262.048*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			16.4735*deg	,8.4741*deg	,-1.419*deg	,-9.4175*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F2"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="471.051*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			11.9412*deg	,7.5404*deg	,-3.0597*deg	,-7.4597*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F1"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="562.721*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			11.2453*deg	,2.6765*deg	,-6.8472*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F2"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.052*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			9.6425*deg	,4.0592*deg	,-3.6616*deg	,-9.643*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F1"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.002*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="9">
+			10.2499*deg	,7.9025*deg	,5.5659*deg	,3.2235*deg	,0.8753*deg	,-1.4658*deg	,-3.801*deg	,-6.1455*deg	,-8.5563*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F2"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			8.3153*deg	,3.8227*deg	,-5.1984*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal0f:TECICBCont0F2"/>
+		<Numeric name="StartCopyNo" value="28"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybridShort"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			-9.9916*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal3.xml b/examples/DDCMS/data/tecpetal3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14afd9ed6c65daa31220e11150d18b018fccba30
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal3.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal3.xml" eval="true">
+		<Constant name="PetalContRmin" value="30.90*cm"/>
+		<Constant name="PetalRmin" value="31.30*cm"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal3.xml">
+		<Tubs name="TECPetalCont3" rMin="[PetalContRmin]" rMax="[tecpetpar:PetalContRmax]" dz="[tecpetpar:PetalContThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+		<Tubs name="TECPetal3" rMin="[PetalRmin]" rMax="[tecpetpar:PetalRmax]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetpar:PetalWidth]/2" deltaPhi="[tecpetpar:PetalWidth]"/>
+		<Tubs name="TECICBCont3" rMin="[PetalRmin]" rMax="[tecpetpar:ICBRmax]" dz="[tecpetpar:ICBThick]/2" startPhi="-[tecpetpar:ICBWidth]/2" deltaPhi="[tecpetpar:ICBWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal3b.xml b/examples/DDCMS/data/tecpetal3b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ddcc36838ce18b56273615cdde7a86911444420
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal3b.xml
@@ -0,0 +1,390 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal3b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal3b.xml">
+		<Tubs name="TECPetal3B" rMin="[tecpetal3:PetalRmin]" rMax="[tecpetalb:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalb:PetalWidth0]/2" deltaPhi="[tecpetalb:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal3b.xml">
+		<LogicalPart name="TECPetalCont3B" category="unspecified">
+			<rSolid name="tecpetal3:TECPetalCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame3B" category="unspecified">
+			<rSolid name="tecpetal3:TECPetal3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal3B" category="unspecified">
+			<rSolid name="tecpetal3b:TECPetal3B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal4B" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal1B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal5B" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal2B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont3B1" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont3B2" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal3b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecring1b:TECRing1B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring1:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecring2b:TECRing2B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring2:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecring3b:TECRing3B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecring4b:TECRing4B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecring5b:TECRing5B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecring6b:TECRing6B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecpetal3b:TECPetalFrame3B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalFrame3B"/>
+			<rChild name="tecpetal3b:TECPetal3B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalFrame3B"/>
+			<rChild name="tecpetal3b:TECPetal4B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalFrame3B"/>
+			<rChild name="tecpetal3b:TECPetal5B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecpetal3b:TECICBCont3B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3b:TECPetalCont3B"/>
+			<rChild name="tecpetal3b:TECICBCont3B2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B1"/>
+			<rChild name="tecpetalb:TECICC2B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B1"/>
+			<rChild name="tecpetalb:TECICC2B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B1"/>
+			<rChild name="tecpetalb:TECICC46B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B1"/>
+			<rChild name="tecpetalb:TECICC46B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B1"/>
+			<rChild name="tecpetalb:TECICC46B3"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC1B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC1B2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC1B3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC35B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC35B2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC35B3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC35B4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3b:TECICBCont3B2"/>
+			<rChild name="tecpetalb:TECICC35B5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal3b:TECPetal5B"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal3B"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="372.842*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.9517*deg	,8.6238*deg	,-8.6238*deg	,-10.9554*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal3B"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.8385*deg	,-4.8385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal3B"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.9308*deg	,0.9308*deg	,-9.9308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal3B"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<Numeric name="RPosition" value="491.272*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.829*deg	,-2.1851*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal3B"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9*deg	,0*deg	,-9*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal4B"/>
+		<Numeric name="StartCopyNo" value="15"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.3812*deg	,3.9526*deg	,-3.9526*deg	,-10.3812*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal4B"/>
+		<Numeric name="StartCopyNo" value="19"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,3.2143*deg	,-3.2143*deg	,-9.6429*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal4B"/>
+		<Numeric name="StartCopyNo" value="23"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.144*deg	,5.144*deg	,-5.144*deg	,-14.144*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal4B"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="705.35*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			5.0584*deg	,-3.2876*deg	,-7.7907*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="30"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.727*deg	,6.273*deg	,2.727*deg	,-2.727*deg	,-6.273*deg	,-11.727*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="36"/>
+		<Numeric name="RPosition" value="809.853*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="11">
+			11.729*deg	,9.3832*deg	,7.0374*deg	,4.6916*deg	,2.3458*deg	,0*deg	,-2.3458*deg	,-4.6916*deg	,-7.0374*deg	,-9.3832*deg	,-11.729*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="11">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="47"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.1935*deg	,3.7649*deg	,-3.7649*deg	,-10.1935*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="51"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="57"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			8.6894*deg	,4.1677*deg	,2.2608*deg	,-2.2608*deg	,-4.1677*deg	,-8.6894*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,6.3017*deg	,2.6983*deg	,-1.8017*deg	,-2.6983*deg	,-6.3017*deg	,-7.1983*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="71"/>
+		<Numeric name="RPosition" value="1040.55*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0576*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3b:TECPetal5B"/>
+		<Numeric name="StartCopyNo" value="72"/>
+		<Numeric name="RPosition" value="1068.17*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0624*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3b:TECICBCont3B2"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="471.195*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="2">
+			6.6727*deg	,-0.339*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3b:TECICBCont3B1"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="562.517*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="2">
+			5.4762*deg	,-2.429*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3b:TECICBCont3B2"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.152*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			6.3214*deg	,-2.0241*deg	,-6.5265*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3b:TECICBCont3B1"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.452*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="11">
+			12.7924*deg	,10.4466*deg	,8.1008*deg	,5.755*deg	,3.4092*deg	,1.0634*deg	,-1.2824*deg	,-3.6282*deg	,-5.974*deg	,-8.3197*deg	,-10.6655*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3b:TECICBCont3B2"/>
+		<Numeric name="StartCopyNo" value="21"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.634*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			7.1858*deg	,-0.9183*deg	,-6.3149*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3b:TECICBCont3B2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<String name="ChildName" value="tecpetpar:TECDigiOptoHybModule"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:DOHMWidth]"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:DOHMHeight]"/>
+		<Numeric name="Rpos" value="1022.726*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:DOHMZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			11.372*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal3f.xml b/examples/DDCMS/data/tecpetal3f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..911b40e3044dc01e1614340e54dc99fbc24d747b
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal3f.xml
@@ -0,0 +1,385 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal3f.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal3f.xml">
+		<Tubs name="TECPetal3F" rMin="[tecpetal3:PetalRmin]" rMax="[tecpetalf:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalf:PetalWidth0]/2" deltaPhi="[tecpetalf:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal3f.xml">
+		<LogicalPart name="TECPetalCont3F" category="unspecified">
+			<rSolid name="tecpetal3:TECPetalCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame3F" category="unspecified">
+			<rSolid name="tecpetal3:TECPetal3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal3F" category="unspecified">
+			<rSolid name="tecpetal3f:TECPetal3F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal4F" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal1F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal5F" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal2F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont3F1" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont3F2" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal3f.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecring1f:TECRing1F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring1:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecring2f:TECRing2F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring2:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecring3f:TECRing3F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecring4f:TECRing4F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecring5f:TECRing5F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecring6f:TECRing6F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecpetal3f:TECPetalFrame3F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalFrame3F"/>
+			<rChild name="tecpetal3f:TECPetal3F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalFrame3F"/>
+			<rChild name="tecpetal3f:TECPetal4F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalFrame3F"/>
+			<rChild name="tecpetal3f:TECPetal5F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecpetal3f:TECICBCont3F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECPetalCont3F"/>
+			<rChild name="tecpetal3f:TECICBCont3F2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F1"/>
+			<rChild name="tecpetalf:TECICC2F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F1"/>
+			<rChild name="tecpetalf:TECICC2F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F1"/>
+			<rChild name="tecpetalf:TECICC46F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F1"/>
+			<rChild name="tecpetalf:TECICC46F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC1SF1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC1SF2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC1SF3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC35F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC35F2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC35F3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC35F4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecpetal3f:TECICBCont3F2"/>
+			<rChild name="tecpetalf:TECICC35F5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal3f:TECPetal5F"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal3F"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="373.084*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			16.1238*deg	,1.1238*deg	,-16.1238*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal3F"/>
+		<Numeric name="StartCopyNo" value="4"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			12.3385*deg	,2.6615*deg	,-2.6615*deg	,-12.3385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal3F"/>
+		<Numeric name="StartCopyNo" value="8"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.4308*deg	,5.4308*deg	,-5.4308*deg	,-14.4308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal3F"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="491.326*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,5.2432*deg	,-5.3537*deg	,-9.7534*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal3F"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			13.5*deg	,4.5*deg	,-4.5*deg	,-13.5*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="20"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="7">
+			13.5955*deg	,9.3071*deg	,5.6902*deg	,0.7383*deg	,-7.1669*deg	,-8.7012*deg	,-13.5955*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="7">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			12.8571*deg	,6.4286*deg	,0*deg	,-6.4286*deg	,-12.8571*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="32"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.644*deg	,-0.644*deg	,-9.644*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="35"/>
+		<Numeric name="RPosition" value="705.393*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			8.0585*deg	,2.4756*deg	,-5.2453*deg	,-11.2274*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="39"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			7.227*deg	,1.773*deg	,-1.773*deg	,-7.227*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="43"/>
+		<Numeric name="RPosition" value="809.358*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="9">
+			8.8981*deg	,6.5507*deg	,4.2142*deg	,1.8718*deg	,-0.4758*deg	,-2.8175*deg	,-5.1527*deg	,-7.4972*deg	,-9.8497*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="9">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="52"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			13.4078*deg	,5.8779*deg	,0.5506*deg	,-6.9792*deg	,-13.4078*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal4F"/>
+		<Numeric name="StartCopyNo" value="57"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal5F"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.9037*deg	,7.382*deg	,5.4751*deg	,0.9535*deg	,-0.9535*deg	,-5.4751*deg	,-7.382*deg	,-11.9037*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal5F"/>
+		<Numeric name="StartCopyNo" value="71"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,7.1983*deg	,6.3017*deg	,2.6983*deg	,-2.6983*deg	,-6.3017*deg	,-10.1082*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal5F"/>
+		<Numeric name="StartCopyNo" value="79"/>
+		<Numeric name="RPosition" value="1037.61*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9912*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal3f:TECPetal5F"/>
+		<Numeric name="StartCopyNo" value="80"/>
+		<Numeric name="RPosition" value="1065.23*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9978*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3f:TECICBCont3F2"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="471.051*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			11.9412*deg	,7.5404*deg	,-3.0597*deg	,-7.4597*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3f:TECICBCont3F1"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="562.721*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			11.2453*deg	,2.6765*deg	,-6.8472*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3f:TECICBCont3F2"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.052*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			9.6425*deg	,4.0592*deg	,-3.6616*deg	,-9.643*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3f:TECICBCont3F1"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.002*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="9">
+			10.2499*deg	,7.9025*deg	,5.5659*deg	,3.2235*deg	,0.8753*deg	,-1.4658*deg	,-3.801*deg	,-6.1455*deg	,-8.5563*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3f:TECICBCont3F2"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			8.3153*deg	,3.8227*deg	,-5.1984*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal3f:TECICBCont3F2"/>
+		<Numeric name="StartCopyNo" value="28"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybridShort"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			-9.9916*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal6b.xml b/examples/DDCMS/data/tecpetal6b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1feee53e3f3c53d31f384f1e6978af0118556712
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal6b.xml
@@ -0,0 +1,359 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal6b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal6b.xml">
+		<Tubs name="TECPetal6B" rMin="[tecpetal3:PetalRmin]" rMax="[tecpetalb:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalb:PetalWidth0]/2" deltaPhi="[tecpetalb:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal6b.xml">
+		<LogicalPart name="TECPetalCont6B" category="unspecified">
+			<rSolid name="tecpetal3:TECPetalCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame6B" category="unspecified">
+			<rSolid name="tecpetal3:TECPetal3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal6B" category="unspecified">
+			<rSolid name="tecpetal6b:TECPetal6B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal7B" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal1B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalaB" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal2B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont6B1" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont6B2" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal6b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecring2b:TECRing2B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring2:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecring3b:TECRing3B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecring4b:TECRing4B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecring5b:TECRing5B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecring6b:TECRing6B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecpetal6b:TECPetalFrame6B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalFrame6B"/>
+			<rChild name="tecpetal6b:TECPetal6B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalFrame6B"/>
+			<rChild name="tecpetal6b:TECPetal7B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalFrame6B"/>
+			<rChild name="tecpetal6b:TECPetalaB"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecpetal6b:TECICBCont6B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6b:TECPetalCont6B"/>
+			<rChild name="tecpetal6b:TECICBCont6B2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B1"/>
+			<rChild name="tecpetalb:TECICC2B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B1"/>
+			<rChild name="tecpetalb:TECICC2B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B1"/>
+			<rChild name="tecpetalb:TECICC46B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B1"/>
+			<rChild name="tecpetalb:TECICC46B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B1"/>
+			<rChild name="tecpetalb:TECICC46B3"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B2"/>
+			<rChild name="tecpetalb:TECICC35B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B2"/>
+			<rChild name="tecpetalb:TECICC35B2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B2"/>
+			<rChild name="tecpetalb:TECICC35B3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B2"/>
+			<rChild name="tecpetalb:TECICC35B4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6b:TECICBCont6B2"/>
+			<rChild name="tecpetalb:TECICC35B5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="6">
+			<rParent name="tecpetal6b:TECPetalaB"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal6B"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="372.842*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.9517*deg	,8.6238*deg	,-8.6238*deg	,-10.9554*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal6B"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.8385*deg	,-4.8385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal6B"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.9308*deg	,0.9308*deg	,-9.9308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal6B"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<Numeric name="RPosition" value="491.272*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.829*deg	,-2.1851*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal6B"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9*deg	,0*deg	,-9*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal7B"/>
+		<Numeric name="StartCopyNo" value="15"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.3812*deg	,3.9526*deg	,-3.9526*deg	,-10.3812*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal7B"/>
+		<Numeric name="StartCopyNo" value="19"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,3.2143*deg	,-3.2143*deg	,-9.6429*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal7B"/>
+		<Numeric name="StartCopyNo" value="23"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.144*deg	,5.144*deg	,-5.144*deg	,-14.144*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetal7B"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="705.35*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			5.0584*deg	,-3.2876*deg	,-7.7907*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="30"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.727*deg	,6.273*deg	,2.727*deg	,-2.727*deg	,-6.273*deg	,-11.727*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="36"/>
+		<Numeric name="RPosition" value="809.853*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="11">
+			11.729*deg	,9.3832*deg	,7.0374*deg	,4.6916*deg	,2.3458*deg	,0*deg	,-2.3458*deg	,-4.6916*deg	,-7.0374*deg	,-9.3832*deg	,-11.729*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="11">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="47"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.1935*deg	,3.7649*deg	,-3.7649*deg	,-10.1935*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="51"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="57"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			8.6894*deg	,4.1677*deg	,2.2608*deg	,-2.2608*deg	,-4.1677*deg	,-8.6894*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,6.3017*deg	,2.6983*deg	,-1.8017*deg	,-2.6983*deg	,-6.3017*deg	,-7.1983*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="71"/>
+		<Numeric name="RPosition" value="1040.55*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0576*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6b:TECPetalaB"/>
+		<Numeric name="StartCopyNo" value="72"/>
+		<Numeric name="RPosition" value="1068.17*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0624*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6b:TECICBCont6B1"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="562.517*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="2">
+			5.4762*deg	,-2.429*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6b:TECICBCont6B2"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.152*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			6.3214*deg	,-2.0241*deg	,-6.5265*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6b:TECICBCont6B1"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.452*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="11">
+			12.7924*deg	,10.4466*deg	,8.1008*deg	,5.755*deg	,3.4092*deg	,1.0634*deg	,-1.2824*deg	,-3.6282*deg	,-5.974*deg	,-8.3197*deg	,-10.6655*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6b:TECICBCont6B2"/>
+		<Numeric name="StartCopyNo" value="21"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.634*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			7.1858*deg	,-0.9183*deg	,-6.3149*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6b:TECICBCont6B2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<String name="ChildName" value="tecpetpar:TECDigiOptoHybModule"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:DOHMWidth]"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:DOHMHeight]"/>
+		<Numeric name="Rpos" value="1022.726*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:DOHMZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			11.372*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal6f.xml b/examples/DDCMS/data/tecpetal6f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d24bf152c84b5b3957ff8abeb7364fd83f4ca5d1
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal6f.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal6f.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal6f.xml">
+		<Tubs name="TECPetal6F" rMin="[tecpetal3:PetalRmin]" rMax="[tecpetalf:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalf:PetalWidth0]/2" deltaPhi="[tecpetalf:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal6f.xml">
+		<LogicalPart name="TECPetalCont6F" category="unspecified">
+			<rSolid name="tecpetal3:TECPetalCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame6F" category="unspecified">
+			<rSolid name="tecpetal3:TECPetal3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal6F" category="unspecified">
+			<rSolid name="tecpetal6f:TECPetal6F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal7F" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal1F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalaF" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal2F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont6F1" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont6F2" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal6f.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecring2f:TECRing2F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring2:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecring3f:TECRing3F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecring4f:TECRing4F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecring5f:TECRing5F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecring6f:TECRing6F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecpetal6f:TECPetalFrame6F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalFrame6F"/>
+			<rChild name="tecpetal6f:TECPetal6F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalFrame6F"/>
+			<rChild name="tecpetal6f:TECPetal7F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalFrame6F"/>
+			<rChild name="tecpetal6f:TECPetalaF"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecpetal6f:TECICBCont6F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal6f:TECPetalCont6F"/>
+			<rChild name="tecpetal6f:TECICBCont6F2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F1"/>
+			<rChild name="tecpetalf:TECICC2F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F1"/>
+			<rChild name="tecpetalf:TECICC2F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F1"/>
+			<rChild name="tecpetalf:TECICC46F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F1"/>
+			<rChild name="tecpetalf:TECICC46F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F2"/>
+			<rChild name="tecpetalf:TECICC35F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F2"/>
+			<rChild name="tecpetalf:TECICC35F2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F2"/>
+			<rChild name="tecpetalf:TECICC35F3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F2"/>
+			<rChild name="tecpetalf:TECICC35F4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecpetal6f:TECICBCont6F2"/>
+			<rChild name="tecpetalf:TECICC35F5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="5">
+			<rParent name="tecpetal6f:TECPetalaF"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal6F"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="373.084*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			16.1238*deg	,1.1238*deg	,-16.1238*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal6F"/>
+		<Numeric name="StartCopyNo" value="4"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			12.3385*deg	,2.6615*deg	,-2.6615*deg	,-12.3385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal6F"/>
+		<Numeric name="StartCopyNo" value="8"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.4308*deg	,5.4308*deg	,-5.4308*deg	,-14.4308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal6F"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="491.326*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,5.2432*deg	,-5.3537*deg	,-9.7534*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal6F"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			13.5*deg	,4.5*deg	,-4.5*deg	,-13.5*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="20"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="7">
+			13.5955*deg	,9.3071*deg	,5.6902*deg	,0.7383*deg	,-7.1669*deg	,-8.7012*deg	,-13.5955*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="7">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			12.8571*deg	,6.4286*deg	,0*deg	,-6.4286*deg	,-12.8571*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="32"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.644*deg	,-0.644*deg	,-9.644*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="35"/>
+		<Numeric name="RPosition" value="705.393*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			8.0585*deg	,2.4756*deg	,-5.2453*deg	,-11.2274*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="39"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			7.227*deg	,1.773*deg	,-1.773*deg	,-7.227*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="43"/>
+		<Numeric name="RPosition" value="809.358*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="9">
+			8.8981*deg	,6.5507*deg	,4.2142*deg	,1.8718*deg	,-0.4758*deg	,-2.8175*deg	,-5.1527*deg	,-7.4972*deg	,-9.8497*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="9">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="52"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			13.4078*deg	,5.8779*deg	,0.5506*deg	,-6.9792*deg	,-13.4078*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetal7F"/>
+		<Numeric name="StartCopyNo" value="57"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetalaF"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.9037*deg	,7.382*deg	,5.4751*deg	,0.9535*deg	,-0.9535*deg	,-5.4751*deg	,-7.382*deg	,-11.9037*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetalaF"/>
+		<Numeric name="StartCopyNo" value="71"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,7.1983*deg	,6.3017*deg	,2.6983*deg	,-2.6983*deg	,-6.3017*deg	,-10.1082*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetalaF"/>
+		<Numeric name="StartCopyNo" value="79"/>
+		<Numeric name="RPosition" value="1037.61*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9912*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal6f:TECPetalaF"/>
+		<Numeric name="StartCopyNo" value="80"/>
+		<Numeric name="RPosition" value="1065.23*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9978*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6f:TECICBCont6F1"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="562.721*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			11.2453*deg	,2.6765*deg	,-6.8472*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6f:TECICBCont6F2"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.052*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			9.6425*deg	,4.0592*deg	,-3.6616*deg	,-9.643*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6f:TECICBCont6F1"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.002*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="9">
+			10.2499*deg	,7.9025*deg	,5.5659*deg	,3.2235*deg	,0.8753*deg	,-1.4658*deg	,-3.801*deg	,-6.1455*deg	,-8.5563*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6f:TECICBCont6F2"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			8.3153*deg	,3.8227*deg	,-5.1984*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal6f:TECICBCont6F2"/>
+		<Numeric name="StartCopyNo" value="28"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybridShort"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			-9.9916*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal8b.xml b/examples/DDCMS/data/tecpetal8b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..475dfb347594c647ace88339cb3363f97513a469
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal8b.xml
@@ -0,0 +1,332 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal8b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal8b.xml">
+		<Tubs name="TECPetal8B" rMin="[tecpetal3:PetalRmin]" rMax="[tecpetalb:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalb:PetalWidth0]/2" deltaPhi="[tecpetalb:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal8b.xml">
+		<LogicalPart name="TECPetalCont8B" category="unspecified">
+			<rSolid name="tecpetal3:TECPetalCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame8B" category="unspecified">
+			<rSolid name="tecpetal3:TECPetal3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal8B" category="unspecified">
+			<rSolid name="tecpetal8b:TECPetal8B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal9B" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal1B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalbB" category="unspecified">
+			<rSolid name="tecpetalb:TECPetal2B"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont8B1" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont8B2" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal8b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecring3b:TECRing3B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecring4b:TECRing4B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecring5b:TECRing5B"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecring6b:TECRing6B"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecpetal8b:TECPetalFrame8B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalFrame8B"/>
+			<rChild name="tecpetal8b:TECPetal8B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalFrame8B"/>
+			<rChild name="tecpetal8b:TECPetal9B"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalFrame8B"/>
+			<rChild name="tecpetal8b:TECPetalbB"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecpetal8b:TECICBCont8B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8b:TECPetalCont8B"/>
+			<rChild name="tecpetal8b:TECICBCont8B2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B1"/>
+			<rChild name="tecpetalb:TECICC46B1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B1"/>
+			<rChild name="tecpetalb:TECICC46B2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B1"/>
+			<rChild name="tecpetalb:TECICC46B3"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B2"/>
+			<rChild name="tecpetalb:TECICC35B1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B2"/>
+			<rChild name="tecpetalb:TECICC35B2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B2"/>
+			<rChild name="tecpetalb:TECICC35B3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B2"/>
+			<rChild name="tecpetalb:TECICC35B4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8b:TECICBCont8B2"/>
+			<rChild name="tecpetalb:TECICC35B5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="8">
+			<rParent name="tecpetal8b:TECPetalbB"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal8B"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="372.842*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.9517*deg	,8.6238*deg	,-8.6238*deg	,-10.9554*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal8B"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.8385*deg	,-4.8385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal8B"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.9308*deg	,0.9308*deg	,-9.9308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal8B"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<Numeric name="RPosition" value="491.272*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="2">
+			4.829*deg	,-2.1851*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="2">
+			tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal8B"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9*deg	,0*deg	,-9*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal9B"/>
+		<Numeric name="StartCopyNo" value="15"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.3812*deg	,3.9526*deg	,-3.9526*deg	,-10.3812*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal9B"/>
+		<Numeric name="StartCopyNo" value="19"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,3.2143*deg	,-3.2143*deg	,-9.6429*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal9B"/>
+		<Numeric name="StartCopyNo" value="23"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.144*deg	,5.144*deg	,-5.144*deg	,-14.144*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetal9B"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="705.35*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			5.0584*deg	,-3.2876*deg	,-7.7907*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="30"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.727*deg	,6.273*deg	,2.727*deg	,-2.727*deg	,-6.273*deg	,-11.727*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="36"/>
+		<Numeric name="RPosition" value="809.853*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="11">
+			11.729*deg	,9.3832*deg	,7.0374*deg	,4.6916*deg	,2.3458*deg	,0*deg	,-2.3458*deg	,-4.6916*deg	,-7.0374*deg	,-9.3832*deg	,-11.729*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="11">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="47"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			10.1935*deg	,3.7649*deg	,-3.7649*deg	,-10.1935*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="51"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="57"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			8.6894*deg	,4.1677*deg	,2.2608*deg	,-2.2608*deg	,-4.1677*deg	,-8.6894*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,6.3017*deg	,2.6983*deg	,-1.8017*deg	,-2.6983*deg	,-6.3017*deg	,-7.1983*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="71"/>
+		<Numeric name="RPosition" value="1040.55*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0576*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8b:TECPetalbB"/>
+		<Numeric name="StartCopyNo" value="72"/>
+		<Numeric name="RPosition" value="1068.17*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			10.0624*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8b:TECICBCont8B2"/>
+		<Numeric name="StartCopyNo" value="7"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.152*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			6.3214*deg	,-2.0241*deg	,-6.5265*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8b:TECICBCont8B1"/>
+		<Numeric name="StartCopyNo" value="10"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.452*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="11">
+			12.7924*deg	,10.4466*deg	,8.1008*deg	,5.755*deg	,3.4092*deg	,1.0634*deg	,-1.2824*deg	,-3.6282*deg	,-5.974*deg	,-8.3197*deg	,-10.6655*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8b:TECICBCont8B2"/>
+		<Numeric name="StartCopyNo" value="21"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.634*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			7.1858*deg	,-0.9183*deg	,-6.3149*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8b:TECICBCont8B2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<String name="ChildName" value="tecpetpar:TECDigiOptoHybModule"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:DOHMWidth]"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:DOHMHeight]"/>
+		<Numeric name="Rpos" value="1022.726*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:DOHMZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			11.372*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetal8f.xml b/examples/DDCMS/data/tecpetal8f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..144be04ebacdfa3eea77f1adc1a67237609f245b
--- /dev/null
+++ b/examples/DDCMS/data/tecpetal8f.xml
@@ -0,0 +1,327 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetal8f.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ICCZ" value="([tecpetpar:ICBThick]-[tecpetpar:ICCThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetal8f.xml">
+		<Tubs name="TECPetal8F" rMin="[tecpetal3:PetalRmin]" rMax="[tecpetalf:PetalR1]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalf:PetalWidth0]/2" deltaPhi="[tecpetalf:PetalWidth0]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetal8f.xml">
+		<LogicalPart name="TECPetalCont8F" category="unspecified">
+			<rSolid name="tecpetal3:TECPetalCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalFrame8F" category="unspecified">
+			<rSolid name="tecpetal3:TECPetal3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal8F" category="unspecified">
+			<rSolid name="tecpetal8f:TECPetal8F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetal9F" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal1F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECPetalbF" category="unspecified">
+			<rSolid name="tecpetalf:TECPetal2F"/>
+			<rMaterial name="tecmaterial:TEC_petal"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont8F1" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECICBCont8F2" category="unspecified">
+			<rSolid name="tecpetal3:TECICBCont3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecpetal8f.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecring3f:TECRing3F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring3:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecring4f:TECRing4F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring4:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecring5f:TECRing5F"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring5:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecring6f:TECRing6F"/>
+			<rRotation name="tecpetpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="[tecring6:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecpetal8f:TECPetalFrame8F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalFrame8F"/>
+			<rChild name="tecpetal8f:TECPetal8F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalFrame8F"/>
+			<rChild name="tecpetal8f:TECPetal9F"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalFrame8F"/>
+			<rChild name="tecpetal8f:TECPetalbF"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecpetal8f:TECICBCont8F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecpetal8f:TECPetalCont8F"/>
+			<rChild name="tecpetal8f:TECICBCont8F2"/>
+			<Translation x="[zero]" y="[zero]" z="[tecpetpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F1"/>
+			<rChild name="tecpetalf:TECICC46F1"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F1"/>
+			<rChild name="tecpetalf:TECICC46F2"/>
+			<Translation x="[zero]" y="[zero]" z="[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F2"/>
+			<rChild name="tecpetalf:TECICC35F1"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F2"/>
+			<rChild name="tecpetalf:TECICC35F2"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F2"/>
+			<rChild name="tecpetalf:TECICC35F3"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F2"/>
+			<rChild name="tecpetalf:TECICC35F4"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tecpetal8f:TECICBCont8F2"/>
+			<rChild name="tecpetalf:TECICC35F5"/>
+			<Translation x="[zero]" y="[zero]" z="-[ICCZ]"/>
+		</PosPart>
+		<PosPart copyNumber="7">
+			<rParent name="tecpetal8f:TECPetalbF"/>
+			<rChild name="tecwheel:TECInnerManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal8F"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="RPosition" value="373.084*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			16.1238*deg	,1.1238*deg	,-16.1238*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal8F"/>
+		<Numeric name="StartCopyNo" value="4"/>
+		<Numeric name="RPosition" value="438.663*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			12.3385*deg	,2.6615*deg	,-2.6615*deg	,-12.3385*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool4,tecpetpar:TECCool4,tecpetpar:TECCool3,tecpetpar:TECCool3</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal8F"/>
+		<Numeric name="StartCopyNo" value="8"/>
+		<Numeric name="RPosition" value="451.736*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			14.4308*deg	,5.4308*deg	,-5.4308*deg	,-14.4308*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal8F"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<Numeric name="RPosition" value="491.326*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			9.6429*deg	,5.2432*deg	,-5.3537*deg	,-9.7534*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal8F"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<Numeric name="RPosition" value="529.973*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			13.5*deg	,4.5*deg	,-4.5*deg	,-13.5*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="20"/>
+		<Numeric name="RPosition" value="565.026*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="7">
+			13.5955*deg	,9.3071*deg	,5.6902*deg	,0.7383*deg	,-7.1669*deg	,-8.7012*deg	,-13.5955*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="7">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="RPosition" value="646.359*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			12.8571*deg	,6.4286*deg	,0*deg	,-6.4286*deg	,-12.8571*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="32"/>
+		<Numeric name="RPosition" value="688.526*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="3">
+			9.644*deg	,-0.644*deg	,-9.644*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="3">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="35"/>
+		<Numeric name="RPosition" value="705.393*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			8.0585*deg	,2.4756*deg	,-5.2453*deg	,-11.2274*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="39"/>
+		<Numeric name="RPosition" value="777.681*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="4">
+			7.227*deg	,1.773*deg	,-1.773*deg	,-7.227*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="4">
+			tecpetpar:TECCool3,tecpetpar:TECCool3,tecpetpar:TECCool4,tecpetpar:TECCool4</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="43"/>
+		<Numeric name="RPosition" value="809.358*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="9">
+			8.8981*deg	,6.5507*deg	,4.2142*deg	,1.8718*deg	,-0.4758*deg	,-2.8175*deg	,-5.1527*deg	,-7.4972*deg	,-9.8497*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="9">
+			tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5,tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="52"/>
+		<Numeric name="RPosition" value="826.305*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="5">
+			13.4078*deg	,5.8779*deg	,0.5506*deg	,-6.9792*deg	,-13.4078*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="5">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetal9F"/>
+		<Numeric name="StartCopyNo" value="57"/>
+		<Numeric name="RPosition" value="862.788*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="6">
+			11.25*deg	,6.75*deg	,2.25*deg	,-2.25*deg	,-6.75*deg	,-11.25*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="6">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetalbF"/>
+		<Numeric name="StartCopyNo" value="63"/>
+		<Numeric name="RPosition" value="937.93*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.9037*deg	,7.382*deg	,5.4751*deg	,0.9535*deg	,-0.9535*deg	,-5.4751*deg	,-7.382*deg	,-11.9037*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool2,tecpetpar:TECCool2</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetalbF"/>
+		<Numeric name="StartCopyNo" value="71"/>
+		<Numeric name="RPosition" value="997.895*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="8">
+			11.6983*deg	,7.1983*deg	,6.3017*deg	,2.6983*deg	,-2.6983*deg	,-6.3017*deg	,-10.1082*deg	,-11.6983*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="8">
+			tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool1,tecpetpar:TECCool5,tecpetpar:TECCool1</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetalbF"/>
+		<Numeric name="StartCopyNo" value="79"/>
+		<Numeric name="RPosition" value="1037.61*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9912*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECCoolAlgo">
+		<rParent name="tecpetal8f:TECPetalbF"/>
+		<Numeric name="StartCopyNo" value="80"/>
+		<Numeric name="RPosition" value="1065.23*mm"/>
+		<Vector name="PhiPosition" type="numeric" nEntries="1">
+			-9.9978*deg</Vector>
+		<Vector name="CoolInsert" type="string" nEntries="1">
+			tecpetpar:TECCool5</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8f:TECICBCont8F2"/>
+		<Numeric name="StartCopyNo" value="12"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="685.052*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="4">
+			9.6425*deg	,4.0592*deg	,-3.6616*deg	,-9.643*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8f:TECICBCont8F1"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="807.002*mm"/>
+		<Numeric name="Zpos" value="-[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="9">
+			10.2499*deg	,7.9025*deg	,5.5659*deg	,3.2235*deg	,0.8753*deg	,-1.4658*deg	,-3.801*deg	,-6.1455*deg	,-8.5563*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8f:TECICBCont8F2"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybrid"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="3">
+			8.3153*deg	,3.8227*deg	,-5.1984*deg</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTECOptoHybAlgo">
+		<rParent name="tecpetal8f:TECICBCont8F2"/>
+		<Numeric name="StartCopyNo" value="28"/>
+		<String name="ChildName" value="tecpetpar:TECOptoHybridShort"/>
+		<Numeric name="OptoWidth" value="[tecpetpar:HybridHeight]"/>
+		<Numeric name="OptoHeight" value="[tecpetpar:HybridWidth]"/>
+		<Numeric name="Rpos" value="977.591*mm"/>
+		<Numeric name="Zpos" value="[tecpetpar:HybridZ]"/>
+		<Vector name="Angles" type="numeric" nEntries="1">
+			-9.9916*deg</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetalb.xml b/examples/DDCMS/data/tecpetalb.xml
new file mode 100644
index 0000000000000000000000000000000000000000..29237d8769a2cd5c3ac8667bdd97d8e92f7f278e
--- /dev/null
+++ b/examples/DDCMS/data/tecpetalb.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetalb.xml" eval="true">
+		<Constant name="PetalWidth0" value="25.8*deg"/>
+		<Constant name="PetalWidth1" value="29.9*deg"/>
+		<Constant name="PetalWidth2" value="26.9*deg"/>
+		<Constant name="PetalR1" value="55.50*cm"/>
+		<Constant name="PetalR2" value="75.60*cm"/>
+		<Constant name="ICC35B5shift" value="-4.54*deg"/>
+	</ConstantsSection>
+	<SolidSection label="tecpetalb.xml">
+		<Tubs name="TECPetal1B" rMin="[tecpetalb:PetalR1]" rMax="[tecpetalb:PetalR2]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalb:PetalWidth1]/2" deltaPhi="[tecpetalb:PetalWidth1]"/>
+		<Tubs name="TECPetal2B" rMin="[tecpetalb:PetalR2]" rMax="[tecpetpar:PetalRmax]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalb:PetalWidth2]/2" deltaPhi="[tecpetalb:PetalWidth2]"/>
+		<Tubs name="TECICC1B1" rMin="391.89*mm" rMax="449.56*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.17643*deg" deltaPhi="4.35286*deg"/>
+		<Tubs name="TECICC1B2" rMin="449.56*mm" rMax="493.23*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-5.83087*deg" deltaPhi="11.6617*deg"/>
+		<Tubs name="TECICC1B3" rMin="493.23*mm" rMax="586.67*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.17298*deg" deltaPhi="4.34596*deg"/>
+		<Tubs name="TECICC35B1" rMin="586.67*mm" rMax="657.37*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.10147*deg" deltaPhi="4.20295*deg"/>
+		<Tubs name="TECICC35B2" rMin="657.37*mm" rMax="690.87*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-12.3423*deg" deltaPhi="24.6847*deg"/>
+		<Tubs name="TECICC35B3" rMin="690.87*mm" rMax="915.67*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.89888*deg" deltaPhi="5.79776*deg"/>
+		<Tubs name="TECICC35B4" rMin="915.67*mm" rMax="971.8*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-7.10953*deg" deltaPhi="14.2191*deg"/>
+		<Tubs name="TECICC35B5" rMin="971.8*mm" rMax="1085.91*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-3.62561*deg+[ICC35B5shift]" deltaPhi="7.25122*deg"/>
+		<Tubs name="TECICC0LB1" rMin="356.18*mm" rMax="390.57*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-9.12831*deg" deltaPhi="18.2566*deg"/>
+		<Tubs name="TECICC0LB2" rMin="390.57*mm" rMax="432.42*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.24672*deg" deltaPhi="4.49345*deg"/>
+		<Tubs name="TECICC2B1" rMin="542.92*mm" rMax="585.28*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-6.44875*deg" deltaPhi="12.8975*deg"/>
+		<Tubs name="TECICC2B2" rMin="585.28*mm" rMax="637.44*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-1.65027*deg" deltaPhi="3.30054*deg"/>
+		<Tubs name="TECICC46B1" rMin="764.83*mm" rMax="814.65*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-1.45104*deg" deltaPhi="2.90208*deg"/>
+		<Tubs name="TECICC46B2" rMin="814.65*mm" rMax="872.36*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-12.1736*deg" deltaPhi="24.3473*deg"/>
+		<Tubs name="TECICC46B3" rMin="872.36*mm" rMax="933.02*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.12357*deg" deltaPhi="4.24715*deg"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetalb.xml">
+		<LogicalPart name="TECICC1B1" category="unspecified">
+			<rSolid name="tecpetalb:TECICC1B1"/>
+			<rMaterial name="tecmaterial:TEC_ICC1B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC1B2" category="unspecified">
+			<rSolid name="tecpetalb:TECICC1B2"/>
+			<rMaterial name="tecmaterial:TEC_ICC1B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC1B3" category="unspecified">
+			<rSolid name="tecpetalb:TECICC1B3"/>
+			<rMaterial name="tecmaterial:TEC_ICC1B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35B1" category="unspecified">
+			<rSolid name="tecpetalb:TECICC35B1"/>
+			<rMaterial name="tecmaterial:TEC_ICC35B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35B2" category="unspecified">
+			<rSolid name="tecpetalb:TECICC35B2"/>
+			<rMaterial name="tecmaterial:TEC_ICC35B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35B3" category="unspecified">
+			<rSolid name="tecpetalb:TECICC35B3"/>
+			<rMaterial name="tecmaterial:TEC_ICC35B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35B4" category="unspecified">
+			<rSolid name="tecpetalb:TECICC35B4"/>
+			<rMaterial name="tecmaterial:TEC_ICC35B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35B5" category="unspecified">
+			<rSolid name="tecpetalb:TECICC35B5"/>
+			<rMaterial name="tecmaterial:TEC_ICC35B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC0LB1" category="unspecified">
+			<rSolid name="tecpetalb:TECICC0LB1"/>
+			<rMaterial name="tecmaterial:TEC_ICC0LB"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC0LB2" category="unspecified">
+			<rSolid name="tecpetalb:TECICC0LB2"/>
+			<rMaterial name="tecmaterial:TEC_ICC0LB"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC2B1" category="unspecified">
+			<rSolid name="tecpetalb:TECICC2B1"/>
+			<rMaterial name="tecmaterial:TEC_ICC2B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC2B2" category="unspecified">
+			<rSolid name="tecpetalb:TECICC2B2"/>
+			<rMaterial name="tecmaterial:TEC_ICC2B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC46B1" category="unspecified">
+			<rSolid name="tecpetalb:TECICC46B1"/>
+			<rMaterial name="tecmaterial:TEC_ICC46B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC46B2" category="unspecified">
+			<rSolid name="tecpetalb:TECICC46B2"/>
+			<rMaterial name="tecmaterial:TEC_ICC46B"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC46B3" category="unspecified">
+			<rSolid name="tecpetalb:TECICC46B3"/>
+			<rMaterial name="tecmaterial:TEC_ICC46B"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetalf.xml b/examples/DDCMS/data/tecpetalf.xml
new file mode 100644
index 0000000000000000000000000000000000000000..feab8eb05fd4fe5ca89a03fb6f525f4d2df584d6
--- /dev/null
+++ b/examples/DDCMS/data/tecpetalf.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetalf.xml" eval="true">
+		<Constant name="PetalWidth0" value="37.4*deg"/>
+		<Constant name="PetalWidth1" value="30.3*deg"/>
+		<Constant name="PetalWidth2" value="26.9*deg"/>
+		<Constant name="PetalR1" value="53.60*cm"/>
+		<Constant name="PetalR2" value="88.20*cm"/>
+		<Constant name="ICC35F5shift" value="3.41*deg"/>
+	</ConstantsSection>
+	<!-- TECPetal0F is defined in tecpetal{N}f.xml so that the inner radius can be altered
+	     it would be most usefull to introduce i.e. TECPetal0Flong and TECPetal0Fshort with their 
+	     logical definitions here. then the CoolAlgo would not have to be called so often and 
+	     everything would be much tidier. However changing the names of anything seems to be no
+	     good idea so it will stay this way
+	     Matthias-->
+	<SolidSection label="tecpetalf.xml">
+		<Tubs name="TECPetal1F" rMin="[tecpetalf:PetalR1]" rMax="[tecpetalf:PetalR2]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalf:PetalWidth1]/2" deltaPhi="[tecpetalf:PetalWidth1]"/>
+		<Tubs name="TECPetal2F" rMin="[tecpetalf:PetalR2]" rMax="[tecpetpar:PetalRmax]" dz="[tecpetpar:PetalThick]/2" startPhi="-[tecpetalf:PetalWidth2]/2" deltaPhi="[tecpetalf:PetalWidth2]"/>
+		<Tubs name="TECICC01LF1" rMin="256*mm" rMax="280.59*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-15.0295*deg" deltaPhi="30.059*deg"/>
+		<Tubs name="TECICC01LF2" rMin="280.59*mm" rMax="445.95*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.22838*deg" deltaPhi="4.45675*deg"/>
+		<Tubs name="TECICC01LF3" rMin="445.95*mm" rMax="489.83*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-14.4933*deg" deltaPhi="28.9867*deg"/>
+		<Tubs name="TECICC01LF4" rMin="489.83*mm" rMax="583.28*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.60597*deg" deltaPhi="5.21194*deg"/>
+		<Tubs name="TECICC35F1" rMin="583.28*mm" rMax="643.28*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-3.09787*deg" deltaPhi="6.19574*deg"/>
+		<Tubs name="TECICC35F2" rMin="643.28*mm" rMax="713.23*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-8.83675*deg" deltaPhi="17.6735*deg"/>
+		<Tubs name="TECICC35F3" rMin="713.23*mm" rMax="943.22*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-3.06064*deg" deltaPhi="6.12128*deg"/>
+		<Tubs name="TECICC35F4" rMin="943.22*mm" rMax="962.58*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-13.3485*deg" deltaPhi="26.697*deg"/>
+		<Tubs name="TECICC35F5" rMin="962.58*mm" rMax="1092.71*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-3.9312*deg+[ICC35F5shift]" deltaPhi="7.86239*deg"/>
+		<Tubs name="TECICC1SF1" rMin="407.84*mm" rMax="445.95*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.01346*deg" deltaPhi="4.02691*deg"/>
+		<Tubs name="TECICC1SF2" rMin="445.95*mm" rMax="489.48*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-14.1382*deg" deltaPhi="28.2764*deg"/>
+		<Tubs name="TECICC1SF3" rMin="489.48*mm" rMax="582.93*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-2.60767*deg" deltaPhi="5.21534*deg"/>
+		<Tubs name="TECICC0F1" rMin="361*mm" rMax="389.81*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-13.6144*deg" deltaPhi="27.2288*deg"/>
+		<Tubs name="TECICC0F2" rMin="389.81*mm" rMax="446.04*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-1.7847*deg" deltaPhi="3.56939*deg"/>
+		<Tubs name="TECICC2F1" rMin="543*mm" rMax="565.1*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-11.4782*deg" deltaPhi="22.9565*deg"/>
+		<Tubs name="TECICC2F2" rMin="565.1*mm" rMax="636.46*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-1.25806*deg" deltaPhi="2.51612*deg"/>
+		<Tubs name="TECICC46F1" rMin="795*mm" rMax="852.44*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-11.0046*deg" deltaPhi="22.0091*deg"/>
+		<Tubs name="TECICC46F2" rMin="852.44*mm" rMax="914.9*mm" dz="[tecpetpar:ICCThick]/2" startPhi="-1.47394*deg" deltaPhi="2.94789*deg"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetalf.xml">
+		<LogicalPart name="TECICC01LF1" category="unspecified">
+			<rSolid name="tecpetalf:TECICC01LF1"/>
+			<rMaterial name="tecmaterial:TEC_ICC01LF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC01LF2" category="unspecified">
+			<rSolid name="tecpetalf:TECICC01LF2"/>
+			<rMaterial name="tecmaterial:TEC_ICC01LF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC01LF3" category="unspecified">
+			<rSolid name="tecpetalf:TECICC01LF3"/>
+			<rMaterial name="tecmaterial:TEC_ICC01LF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC01LF4" category="unspecified">
+			<rSolid name="tecpetalf:TECICC01LF4"/>
+			<rMaterial name="tecmaterial:TEC_ICC01LF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35F1" category="unspecified">
+			<rSolid name="tecpetalf:TECICC35F1"/>
+			<rMaterial name="tecmaterial:TEC_ICC35F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35F2" category="unspecified">
+			<rSolid name="tecpetalf:TECICC35F2"/>
+			<rMaterial name="tecmaterial:TEC_ICC35F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35F3" category="unspecified">
+			<rSolid name="tecpetalf:TECICC35F3"/>
+			<rMaterial name="tecmaterial:TEC_ICC35F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35F4" category="unspecified">
+			<rSolid name="tecpetalf:TECICC35F4"/>
+			<rMaterial name="tecmaterial:TEC_ICC35F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC35F5" category="unspecified">
+			<rSolid name="tecpetalf:TECICC35F5"/>
+			<rMaterial name="tecmaterial:TEC_ICC35F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC1SF1" category="unspecified">
+			<rSolid name="tecpetalf:TECICC1SF1"/>
+			<rMaterial name="tecmaterial:TEC_ICC1SF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC1SF2" category="unspecified">
+			<rSolid name="tecpetalf:TECICC1SF2"/>
+			<rMaterial name="tecmaterial:TEC_ICC1SF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC1SF3" category="unspecified">
+			<rSolid name="tecpetalf:TECICC1SF3"/>
+			<rMaterial name="tecmaterial:TEC_ICC1SF"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC0F1" category="unspecified">
+			<rSolid name="tecpetalf:TECICC0F1"/>
+			<rMaterial name="tecmaterial:TEC_ICC0F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC0F2" category="unspecified">
+			<rSolid name="tecpetalf:TECICC0F2"/>
+			<rMaterial name="tecmaterial:TEC_ICC0F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC2F1" category="unspecified">
+			<rSolid name="tecpetalf:TECICC2F1"/>
+			<rMaterial name="tecmaterial:TEC_ICC2F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC2F2" category="unspecified">
+			<rSolid name="tecpetalf:TECICC2F2"/>
+			<rMaterial name="tecmaterial:TEC_ICC2F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC46F1" category="unspecified">
+			<rSolid name="tecpetalf:TECICC46F1"/>
+			<rMaterial name="tecmaterial:TEC_ICC46F"/>
+		</LogicalPart>
+		<LogicalPart name="TECICC46F2" category="unspecified">
+			<rSolid name="tecpetalf:TECICC46F2"/>
+			<rMaterial name="tecmaterial:TEC_ICC46F"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecpetpar.xml b/examples/DDCMS/data/tecpetpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..48f99c7ac3c11256d502e76689ebe4ae2e00895d
--- /dev/null
+++ b/examples/DDCMS/data/tecpetpar.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecpetpar.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="PetalContThick" value="50.5*mm"/>
+		<Constant name="PetalContWidth" value="37.5*deg"/>
+		<Constant name="PetalContRmax" value="110.17*cm"/>
+		<Constant name="HybridWidth" value="29.97*mm"/>
+		<Constant name="HybridHeight" value="22.99*mm"/>
+		<Constant name="HybridThick" value="1.0*mm"/>
+		<!--(real 1.5mm) in reality this sticks out into the ring volume and is compressed to keep hirachy intact-->
+		<Constant name="CoolR1" value="4.1791*mm"/>
+		<Constant name="CoolR2" value="4.8276*mm"/>
+		<Constant name="CoolR3" value="4.6029*mm"/>
+		<Constant name="CoolR4" value="6.2889*mm"/>
+		<Constant name="CoolR5" value="2.9221*mm"/>
+		<Constant name="CoolL" value="10.00*mm"/>
+		<Constant name="PetalThick" value="10.0*mm"/>
+		<Constant name="PetalWidth" value="37.4*deg"/>
+		<Constant name="PetalRmax" value="109.9*cm"/>
+		<Constant name="ICBThick" value="2.222*mm"/>
+		<!-- see other comments-->
+		<Constant name="ICBWidth" value="37.4*deg"/>
+		<Constant name="ICBRmax" value="110.17*cm"/>
+		<Constant name="ICBZ" value="([PetalThick]+[ICBThick])/2"/>
+		<Constant name="ICCThick" value="1.20*mm"/>
+		<Constant name="HybridZ" value="([ICBThick]-[HybridThick])/2"/>
+		<Constant name="BridgeThick" value="0.25*cm"/>
+		<Constant name="DOHMWidth" value="76.12*mm"/>
+		<Constant name="DOHMHeight" value="40.82*mm"/>
+		<Constant name="DOHMZ" value="[zero]"/>
+		<Constant name="CCUMHeight" value="31*mm"/>
+		<Constant name="CCUMWidth" value="31*mm"/>
+		<Constant name="CCUMThick" value="1.0*mm"/>
+		<!-- (real: 2mm)in reality this sticks out into the ring volume and is compressed to keep hirachy intact-->
+		<Constant name="CCUMZ" value="([ICBThick]-[CCUMThick])/2"/>
+	</ConstantsSection>
+	<RotationSection label="tecpetpar.xml">
+		<Rotation name="180X" thetaX="90*deg" phiX="0*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="180*deg" phiZ="0*deg"/>
+	</RotationSection>
+	<SolidSection label="tecpetpar.xml">
+		<Tubs name="TECCool1" rMin="[tecpetpar:zero]" rMax="[tecpetpar:CoolR1]" dz="[tecpetpar:CoolL]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECCool2" rMin="[tecpetpar:zero]" rMax="[tecpetpar:CoolR2]" dz="[tecpetpar:CoolL]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECCool3" rMin="[tecpetpar:zero]" rMax="[tecpetpar:CoolR3]" dz="[tecpetpar:CoolL]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECCool4" rMin="[tecpetpar:zero]" rMax="[tecpetpar:CoolR4]" dz="[tecpetpar:CoolL]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECCool5" rMin="[tecpetpar:zero]" rMax="[tecpetpar:CoolR5]" dz="[tecpetpar:CoolL]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TECOptoHybrid" dx="[tecpetpar:HybridHeight]/2" dy="[tecpetpar:HybridWidth]/2" dz="[tecpetpar:HybridThick]/2"/>
+		<!-- this one is flipped by 90*deg -->
+		<Box name="TECOptoHybridShort" dx="[tecpetpar:HybridWidth]/2" dy="[tecpetpar:HybridHeight]/2" dz="[tecpetpar:HybridThick]/2"/>
+		<Box name="TECDigiOptoHybModule" dx="[tecpetpar:DOHMWidth]/2" dy="[tecpetpar:DOHMHeight]/2" dz="[tecpetpar:ICBThick]/2"/>
+	</SolidSection>
+	<LogicalPartSection label="tecpetpar.xml">
+		<LogicalPart name="TECCool1" category="unspecified">
+			<rSolid name="tecpetpar:TECCool1"/>
+			<rMaterial name="tecmaterial:TEC_petalinsert"/>
+		</LogicalPart>
+		<LogicalPart name="TECCool2" category="unspecified">
+			<rSolid name="tecpetpar:TECCool2"/>
+			<rMaterial name="tecmaterial:TEC_petalinsert"/>
+		</LogicalPart>
+		<LogicalPart name="TECCool3" category="unspecified">
+			<rSolid name="tecpetpar:TECCool3"/>
+			<rMaterial name="tecmaterial:TEC_petalinsert"/>
+		</LogicalPart>
+		<LogicalPart name="TECCool4" category="unspecified">
+			<rSolid name="tecpetpar:TECCool4"/>
+			<rMaterial name="tecmaterial:TEC_petalinsert"/>
+		</LogicalPart>
+		<LogicalPart name="TECCool5" category="unspecified">
+			<rSolid name="tecpetpar:TECCool5"/>
+			<rMaterial name="tecmaterial:TEC_petalinsert"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptoHybrid" category="unspecified">
+			<rSolid name="tecpetpar:TECOptoHybrid"/>
+			<rMaterial name="tecmaterial:TEC_OptoH"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptoHybridShort" category="unspecified">
+			<rSolid name="tecpetpar:TECOptoHybridShort"/>
+			<rMaterial name="tecmaterial:TEC_OptoH"/>
+		</LogicalPart>
+		<LogicalPart name="TECDigiOptoHybModule" category="unspecified">
+			<rSolid name="tecpetpar:TECDigiOptoHybModule"/>
+			<rMaterial name="tecmaterial:TEC_DOHM"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring0.xml b/examples/DDCMS/data/tecring0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d88ae18fcf6caf877ed0877d795d514f430899c1
--- /dev/null
+++ b/examples/DDCMS/data/tecring0.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring0.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule0:Rin]"/>
+		<Constant name="Rout" value="[tecmodule0:Rout]"/>
+		<Constant name="Rmin" value="234.012*mm"/>
+		<Constant name="NPhi" value="24"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule0:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.437*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickDS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickDS]+                                          [ModuleGap])/2"/>
+		<Constant name="RingZ" value="-17.2415*mm"/>
+		<Constant name="BridgeR" value="279.9*mm"/>
+		<Constant name="BridgeZ" value="([tecpetpar:BridgeThick]-[tecmodule0:BridgeThick])/2"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]-([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring0.xml">
+		<Tubs name="TECRing0" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring0b.xml b/examples/DDCMS/data/tecring0b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e261a3abd7f4bd001131c761fa6522789dc2779
--- /dev/null
+++ b/examples/DDCMS/data/tecring0b.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring0b.xml" eval="true">
+		<Constant name="Modules" value="1"/>
+		<Constant name="DPhi" value="360*deg/[tecring0:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="Bridges" value="0"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+		<Constant name="CoolIns0" value="3333"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring0b.xml">
+		<LogicalPart name="TECRing0B" category="unspecified">
+			<rSolid name="tecring0:TECRing0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring0b:TECRing0B"/>
+		<String name="ChildName" value="tecmodule0:TECModule0"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring0:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring0:ModuleZ]"/>
+		<Numeric name="ZOut" value="[tecring0:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring0f.xml b/examples/DDCMS/data/tecring0f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f192e88a310e1f5505999e7bdad69e3e4573dffc
--- /dev/null
+++ b/examples/DDCMS/data/tecring0f.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring0f.xml" eval="true">
+		<Constant name="Modules" value="2"/>
+		<Constant name="DPhi" value="360*deg/[tecring0:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-9.375*deg"/>
+		<Constant name="AngleHyb1" value="-3.125*deg"/>
+		<Constant name="AngleHyb2" value="3.125*deg"/>
+		<Constant name="AngleHyb3" value="9.375*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="4404"/>
+		<Constant name="CoolIns1" value="3333"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring0f.xml">
+		<LogicalPart name="TECRing0F" category="unspecified">
+			<rSolid name="tecring0:TECRing0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring0f:TECRing0F"/>
+		<String name="ChildName" value="tecmodule0:TECModule0"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring0:RPos]"/>
+		<Numeric name="ZIn" value="[tecring0:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring0:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring0f:TECRing0F"/>
+		<String name="ChildName" value="tecmodule0r:TECModule0Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring0:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring0:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring0:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring1.xml b/examples/DDCMS/data/tecring1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ca79d4e2be8977aaf15e9e74b032dab1003a6fc3
--- /dev/null
+++ b/examples/DDCMS/data/tecring1.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring1.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule1:Rin]"/>
+		<Constant name="Rout" value="[tecmodule1:Rout]"/>
+		<Constant name="Rmin" value="321.932*mm"/>
+		<Constant name="NPhi" value="24"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule1:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.437*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickDS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickDS]+                                          [ModuleGap])/2"/>
+		<Constant name="RingZ" value="17.2785*mm"/>
+		<Constant name="BridgeR" value="368.9*mm"/>
+		<Constant name="BridgeZ" value="([tecpetpar:BridgeThick]-[tecmodule1:BridgeThick])/2"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]+([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring1.xml">
+		<Tubs name="TECRing1" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring1b.xml b/examples/DDCMS/data/tecring1b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bd0bdf3500ee72083dff978aa10ee4a4f6a3a9ef
--- /dev/null
+++ b/examples/DDCMS/data/tecring1b.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring1b.xml" eval="true">
+		<Constant name="Modules" value="1"/>
+		<Constant name="DPhi" value="360*deg/[tecring1:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-10.0*deg"/>
+		<Constant name="AngleHyb1" value="10.0*deg"/>
+		<Constant name="Bridges" value="0"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+		<Constant name="CoolIns0" value="3333"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring1b.xml">
+		<LogicalPart name="TECRing1B" category="unspecified">
+			<rSolid name="tecring1:TECRing1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring1b:TECRing1B"/>
+		<String name="ChildName" value="tecmodule1:TECModule1"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring1:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring1:ModuleZ]"/>
+		<Numeric name="ZOut" value="[tecring1:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring1f.xml b/examples/DDCMS/data/tecring1f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5c34a136124e3d10fddb3b9d9c3b56e851976892
--- /dev/null
+++ b/examples/DDCMS/data/tecring1f.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring1f.xml" eval="true">
+		<Constant name="Modules" value="2"/>
+		<Constant name="DPhi" value="360*deg/[tecring1:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="3333"/>
+		<Constant name="CoolIns1" value="4440"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring1f.xml">
+		<LogicalPart name="TECRing1F" category="unspecified">
+			<rSolid name="tecring1:TECRing1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring1f:TECRing1F"/>
+		<String name="ChildName" value="tecmodule1:TECModule1"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring1:RPos]"/>
+		<Numeric name="ZIn" value="[tecring1:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring1:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring1f:TECRing1F"/>
+		<String name="ChildName" value="tecmodule1r:TECModule1Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring1:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring1:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring1:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring2.xml b/examples/DDCMS/data/tecring2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c994a1701208f05235fda34429d923dc7ffd0639
--- /dev/null
+++ b/examples/DDCMS/data/tecring2.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring2.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule2:Rin]"/>
+		<Constant name="Rout" value="[tecmodule2:Rout]"/>
+		<Constant name="Rmin" value="391.032*mm"/>
+		<Constant name="NPhi" value="40"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule2:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.45*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickSS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickSS]+                                          [ModuleGap])/2-[tecmodpar:SideFrameThick]"/>
+		<Constant name="RingZ" value="-13.236*mm"/>
+		<Constant name="BridgeR" value="449.8*mm"/>
+		<Constant name="BridgeZ" value="-0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]-([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring2.xml">
+		<Tubs name="TECRing2" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring2b.xml b/examples/DDCMS/data/tecring2b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..284ea4d8dcef093c0eb7e1fed5b945502478c0f9
--- /dev/null
+++ b/examples/DDCMS/data/tecring2b.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring2b.xml" eval="true">
+		<Constant name="Modules" value="2"/>
+		<Constant name="DPhi" value="360*deg/[tecring2:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-5.00*deg"/>
+		<Constant name="AngleHyb1" value="5.00*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+		<Constant name="CoolIns0" value="1111"/>
+		<Constant name="CoolIns1" value="2020"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring2b.xml">
+		<LogicalPart name="TECRing2B" category="unspecified">
+			<rSolid name="tecring2:TECRing2"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring2b:TECRing2B"/>
+		<String name="ChildName" value="tecmodule2:TECModule2"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring2:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring2:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="ZOut" value="[tecring2:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="4"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring2b:TECRing2B"/>
+		<String name="ChildName" value="tecmodule2:TECModule2Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring2:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring2:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring2:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring2f.xml b/examples/DDCMS/data/tecring2f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..30092de9bf510afb8835a4728128ae8da21d5e6c
--- /dev/null
+++ b/examples/DDCMS/data/tecring2f.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring2f.xml" eval="true">
+		<Constant name="Modules" value="3"/>
+		<Constant name="DPhi" value="360*deg/[tecring2:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-9.375*deg"/>
+		<Constant name="AngleHyb1" value="-3.125*deg"/>
+		<Constant name="AngleHyb2" value="3.125*deg"/>
+		<Constant name="AngleHyb3" value="9.375*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="0202"/>
+		<Constant name="CoolIns1" value="1111"/>
+		<Constant name="CoolIns2" value="2020"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring2f.xml">
+		<LogicalPart name="TECRing2F" category="unspecified">
+			<rSolid name="tecring2:TECRing2"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring2f:TECRing2F"/>
+		<String name="ChildName" value="tecmodule2:TECModule2"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring2:RPos]"/>
+		<Numeric name="ZIn" value="[tecring2:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring2:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring2f:TECRing2F"/>
+		<String name="ChildName" value="tecmodule2:TECModule2Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring2:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring2:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring2:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring3.xml b/examples/DDCMS/data/tecring3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..01ec4442496de19ffe788e403cfaba0b967e38a7
--- /dev/null
+++ b/examples/DDCMS/data/tecring3.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring3.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule3:Rin]"/>
+		<Constant name="Rout" value="[tecmodule3:Rout]"/>
+		<Constant name="Rmin" value="503.081*mm"/>
+		<Constant name="NPhi" value="56"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule3:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.45*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickSS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickSS]+                                          [ModuleGap])/2 -[tecmodpar:SideFrameThick]"/>
+		<Constant name="RingZ" value="13.237*mm"/>
+		<Constant name="BridgeR" value="563.8*mm"/>
+		<Constant name="BridgeZ" value="-0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]+([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring3.xml">
+		<Tubs name="TECRing3" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring3b.xml b/examples/DDCMS/data/tecring3b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d52db44ae4c445a871960f70d60de2815a84b5b
--- /dev/null
+++ b/examples/DDCMS/data/tecring3b.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring3b.xml" eval="true">
+		<Constant name="Modules" value="3"/>
+		<Constant name="DPhi" value="360*deg/[tecring3:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-7.000*deg"/>
+		<Constant name="AngleHyb1" value="7.000*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="0202"/>
+		<Constant name="CoolIns1" value="1111"/>
+		<Constant name="CoolIns2" value="2020"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring3b.xml">
+		<LogicalPart name="TECRing3B" category="unspecified">
+			<rSolid name="tecring3:TECRing3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring3b:TECRing3B"/>
+		<String name="ChildName" value="tecmodule3:TECModule3"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring3:RPos]"/>
+		<Numeric name="ZIn" value="[tecring3:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring3:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring3b:TECRing3B"/>
+		<String name="ChildName" value="tecmodule3:TECModule3Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring3:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring3:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring3:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring3f.xml b/examples/DDCMS/data/tecring3f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ccfdf78f9439da7bcf75e3fad6c2317bc453b6be
--- /dev/null
+++ b/examples/DDCMS/data/tecring3f.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring3f.xml" eval="true">
+		<Constant name="Modules" value="4"/>
+		<Constant name="DPhi" value="360*deg/[tecring3:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-9.375*deg"/>
+		<Constant name="AngleHyb1" value="0.000*deg"/>
+		<Constant name="AngleHyb2" value="9.375*deg"/>
+		<Constant name="Bridges" value="2"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+		<Constant name="CoolIns0" value="0202"/>
+		<Constant name="CoolIns1" value="1111"/>
+		<Constant name="CoolIns2" value="0000"/>
+		<Constant name="CoolIns3" value="1111"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring3f.xml">
+		<LogicalPart name="TECRing3F" category="unspecified">
+			<rSolid name="tecring3:TECRing3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring3f:TECRing3F"/>
+		<String name="ChildName" value="tecmodule3:TECModule3"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring3:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring3:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="ZOut" value="[tecring3:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring3f:TECRing3F"/>
+		<String name="ChildName" value="tecmodule3:TECModule3Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring3:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring3:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring3:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring4.xml b/examples/DDCMS/data/tecring4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..47a3848bb30ef632036b41ec1d198a39dcc0486f
--- /dev/null
+++ b/examples/DDCMS/data/tecring4.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring4.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule4:Rin]"/>
+		<Constant name="Rout" value="[tecmodule4:Rout]"/>
+		<Constant name="Rmin" value="601.787*mm"/>
+		<Constant name="NPhi" value="40"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule4:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.75*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickDS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickDS]+                                          [ModuleGap])/2"/>
+		<Constant name="RingZ" value="-17.229*mm"/>
+		<Constant name="BridgeR" value="685.9*mm"/>
+		<Constant name="BridgeZ" value="([tecpetpar:BridgeThick]-[tecmodule4:BridgeThick])/2"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]-([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring4.xml">
+		<Tubs name="TECRing4" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring4b.xml b/examples/DDCMS/data/tecring4b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8fe08dcf15135d26afa2df6c7934ef3ed8f208ac
--- /dev/null
+++ b/examples/DDCMS/data/tecring4b.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring4b.xml" eval="true">
+		<Constant name="Modules" value="3"/>
+		<Constant name="DPhi" value="360*deg/[tecring4:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-10.000*deg"/>
+		<Constant name="AngleHyb1" value="0.000*deg"/>
+		<Constant name="AngleHyb2" value="10.000*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="4404"/>
+		<Constant name="CoolIns1" value="3333"/>
+		<Constant name="CoolIns2" value="4440"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring4b.xml">
+		<LogicalPart name="TECRing4B" category="unspecified">
+			<rSolid name="tecring4:TECRing4"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring4b:TECRing4B"/>
+		<String name="ChildName" value="tecmodule4:TECModule4"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring4:RPos]"/>
+		<Numeric name="ZIn" value="[tecring4:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring4:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring4b:TECRing4B"/>
+		<String name="ChildName" value="tecmodule4r:TECModule4Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring4:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring4:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring4:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring4f.xml b/examples/DDCMS/data/tecring4f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..631d0794ae0b85f3a8d2d0e5f1814138ce269749
--- /dev/null
+++ b/examples/DDCMS/data/tecring4f.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring4f.xml" eval="true">
+		<Constant name="Modules" value="2"/>
+		<Constant name="DPhi" value="360*deg/[tecring4:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-9.375*deg"/>
+		<Constant name="AngleHyb1" value="-3.125*deg"/>
+		<Constant name="AngleHyb2" value="3.125*deg"/>
+		<Constant name="AngleHyb3" value="9.375*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="4404"/>
+		<Constant name="CoolIns1" value="3333"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring4f.xml">
+		<LogicalPart name="TECRing4F" category="unspecified">
+			<rSolid name="tecring4:TECRing4"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring4f:TECRing4F"/>
+		<String name="ChildName" value="tecmodule4:TECModule4"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring4:RPos]"/>
+		<Numeric name="ZIn" value="[tecring4:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring4:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring4f:TECRing4F"/>
+		<String name="ChildName" value="tecmodule4r:TECModule4Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring4:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring4:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring4:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring5.xml b/examples/DDCMS/data/tecring5.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8ea76d347448b97306b32b09a2df894842ccdf8e
--- /dev/null
+++ b/examples/DDCMS/data/tecring5.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring5.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule5:Rin]"/>
+		<Constant name="Rout" value="[tecmodule5:Rout]"/>
+		<Constant name="Rmin" value="725.41*mm"/>
+		<Constant name="NPhi" value="56"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule5:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.45*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickSS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickSS]+                                          [ModuleGap])/2-[tecmodpar:SideFrameThick]"/>
+		<Constant name="RingZ" value="12.431*mm"/>
+		<Constant name="BridgeR" value="824.6*mm"/>
+		<Constant name="BridgeZ" value="-0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]+([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring5.xml">
+		<Tubs name="TECRing5" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring5b.xml b/examples/DDCMS/data/tecring5b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd6ad62db1b2aba22c6b12f98014a7847ec6817d
--- /dev/null
+++ b/examples/DDCMS/data/tecring5b.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring5b.xml" eval="true">
+		<Constant name="Modules" value="3"/>
+		<Constant name="DPhi" value="360*deg/[tecring5:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-11.00*deg"/>
+		<Constant name="AngleHyb1" value="-8.80*deg"/>
+		<Constant name="AngleHyb2" value="-6.60*deg"/>
+		<Constant name="AngleHyb3" value="-4.40*deg"/>
+		<Constant name="AngleHyb4" value="-2.20*deg"/>
+		<Constant name="AngleHyb5" value="0.00*deg"/>
+		<Constant name="AngleHyb6" value="2.20*deg"/>
+		<Constant name="AngleHyb7" value="4.40*deg"/>
+		<Constant name="AngleHyb8" value="6.60*deg"/>
+		<Constant name="AngleHyb9" value="8.80*deg"/>
+		<Constant name="AngleHybA" value="11.00*deg"/>
+		<Constant name="Bridges" value="1"/>
+		<Constant name="PhiBridge" value="[Phi0]+[DPhi]"/>
+		<Constant name="CoolIns0" value="2202"/>
+		<Constant name="CoolIns1" value="1111"/>
+		<Constant name="CoolIns2" value="2220"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring5b.xml">
+		<LogicalPart name="TECRing5B" category="unspecified">
+			<rSolid name="tecring5:TECRing5"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring5b:TECRing5B"/>
+		<String name="ChildName" value="tecmodule5:TECModule5"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring5:RPos]"/>
+		<Numeric name="ZIn" value="[tecring5:ModuleZ]"/>
+		<Numeric name="ZOut" value="-[tecring5:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="5"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring5b:TECRing5B"/>
+		<String name="ChildName" value="tecmodule5:TECModule5Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring5:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring5:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring5:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring5f.xml b/examples/DDCMS/data/tecring5f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..33c2950f8f21e8991e5d1a5eb056952c001e578e
--- /dev/null
+++ b/examples/DDCMS/data/tecring5f.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring5f.xml" eval="true">
+		<Constant name="Modules" value="4"/>
+		<Constant name="DPhi" value="360*deg/[tecring5:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-11.00*deg"/>
+		<Constant name="AngleHyb1" value="-8.25*deg"/>
+		<Constant name="AngleHyb2" value="-5.50*deg"/>
+		<Constant name="AngleHyb3" value="-2.75*deg"/>
+		<Constant name="AngleHyb4" value="0.00*deg"/>
+		<Constant name="AngleHyb5" value="2.75*deg"/>
+		<Constant name="AngleHyb6" value="5.50*deg"/>
+		<Constant name="AngleHyb7" value="8.25*deg"/>
+		<Constant name="AngleHyb8" value="11.00*deg"/>
+		<Constant name="Bridges" value="2"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+		<Constant name="CoolIns0" value="2202"/>
+		<Constant name="CoolIns1" value="1111"/>
+		<Constant name="CoolIns2" value="2200"/>
+		<Constant name="CoolIns3" value="1111"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring5f.xml">
+		<LogicalPart name="TECRing5F" category="unspecified">
+			<rSolid name="tecring5:TECRing5"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring5f:TECRing5F"/>
+		<String name="ChildName" value="tecmodule5:TECModule5"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring5:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring5:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="ZOut" value="[tecring5:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring5f:TECRing5F"/>
+		<String name="ChildName" value="tecmodule5:TECModule5Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring5:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring5:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring5:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring6.xml b/examples/DDCMS/data/tecring6.xml
new file mode 100644
index 0000000000000000000000000000000000000000..04c5fb4a285af1ed4beb2832bfa14a30b2561633
--- /dev/null
+++ b/examples/DDCMS/data/tecring6.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring6.xml" eval="true">
+		<Constant name="Rin" value="[tecmodule6:Rin]"/>
+		<Constant name="Rout" value="[tecmodule6:Rout]"/>
+		<Constant name="Rmin" value="850.967*mm"/>
+		<Constant name="NPhi" value="80"/>
+		<Constant name="RPos" value="[Rmin]+([tecmodule6:FullHeight]+[tecmodpar:TopFrameHeight])/2"/>
+		<Constant name="ModuleGap" value="3.43*mm"/>
+		<Constant name="RingThick" value="(2*[tecmodpar:ModuleThickSS]+                                            [ModuleGap])"/>
+		<Constant name="ModuleZ" value="([tecmodpar:ModuleThickSS]+                                          [ModuleGap])/2-[tecmodpar:SideFrameThick]"/>
+		<Constant name="RingZ" value="-12.421*mm"/>
+		<Constant name="BridgeR" value="997.4*mm"/>
+		<Constant name="BridgeZ" value="-0.5*[tecmodpar:SideFrameThick]"/>
+		<Constant name="BridgeFrameZ" value="[RingZ]-([tecpetpar:BridgeThick]+            [RingThick])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecring6.xml">
+		<Tubs name="TECRing6" rMin="[Rin]" rMax="[Rout]" dz="[RingThick]/2" startPhi="-[tecpetpar:PetalContWidth]/2" deltaPhi="[tecpetpar:PetalContWidth]"/>
+	</SolidSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring6b.xml b/examples/DDCMS/data/tecring6b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10d44efce1d68093009778bacbd87af0d93ff0ea
--- /dev/null
+++ b/examples/DDCMS/data/tecring6b.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring6b.xml" eval="true">
+		<Constant name="Modules" value="5"/>
+		<Constant name="DPhi" value="360*deg/[tecring6:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-10.00*deg"/>
+		<Constant name="AngleHyb1" value="0.000*deg"/>
+		<Constant name="AngleHyb2" value="10.00*deg"/>
+		<Constant name="Bridges" value="3"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+		<Constant name="CoolIns0" value="1111"/>
+		<Constant name="CoolIns1" value="0000"/>
+		<Constant name="CoolIns2" value="1111"/>
+		<Constant name="CoolIns3" value="0000"/>
+		<Constant name="CoolIns4" value="1111"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring6b.xml">
+		<LogicalPart name="TECRing6B" category="unspecified">
+			<rSolid name="tecring6:TECRing6"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring6b:TECRing6B"/>
+		<String name="ParentName" value="tecring6b:TECRing6B"/>
+		<String name="ChildName" value="tecmodule6:TECModule6"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring6:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring6:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="ZOut" value="[tecring6:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="6"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring6b:TECRing6B"/>
+		<String name="ChildName" value="tecmodule6:TECModule6Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring6:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring6:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring6:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecring6f.xml b/examples/DDCMS/data/tecring6f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a8ad1d9606ec0b449ce3bc91b4c5e964608e826f
--- /dev/null
+++ b/examples/DDCMS/data/tecring6f.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecring6f.xml" eval="true">
+		<Constant name="Modules" value="5"/>
+		<Constant name="DPhi" value="360*deg/[tecring6:NPhi]"/>
+		<Constant name="Phi" value="([Modules]-1)*[DPhi]"/>
+		<Constant name="Phi0" value="-[Phi]/2"/>
+		<Constant name="AngleHyb0" value="-9.375*deg"/>
+		<Constant name="AngleHyb1" value="-3.125*deg"/>
+		<Constant name="AngleHyb2" value="3.125*deg"/>
+		<Constant name="AngleHyb3" value="9.375*deg"/>
+		<Constant name="Bridges" value="3"/>
+		<Constant name="PhiBridge" value="[Phi0]"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tecring6f.xml">
+		<LogicalPart name="TECRing6F" category="unspecified">
+			<rSolid name="tecring6:TECRing6"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTECPhiAlgo">
+		<rParent name="tecring6f:TECRing6F"/>
+		<String name="ParentName" value="tecring6f:TECRing6F"/>
+		<String name="ChildName" value="tecmodule6:TECModule6"/>
+		<Numeric name="StartAngle" value="[Phi0]"/>
+		<Numeric name="IncrAngle" value="[DPhi]"/>
+		<Numeric name="Radius" value="[tecring6:RPos]"/>
+		<Numeric name="ZIn" value="-[tecring6:ModuleZ]-[tecmodpar:SideFrameThick]"/>
+		<Numeric name="ZOut" value="[tecring6:ModuleZ]"/>
+		<Numeric name="Number" value="[Modules]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTECPhiAltAlgo">
+		<rParent name="tecring6f:TECRing6F"/>
+		<String name="ChildName" value="tecmodule6:TECModule6Bridge"/>
+		<Numeric name="StartAngle" value="[PhiBridge]"/>
+		<Numeric name="IncrAngle" value="2*[DPhi]"/>
+		<Numeric name="Radius" value="[tecring6:BridgeR]"/>
+		<Numeric name="ZIn" value="[tecring6:BridgeZ]"/>
+		<Numeric name="ZOut" value="[tecring6:BridgeZ]"/>
+		<Numeric name="Number" value="[Bridges]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecservices.xml b/examples/DDCMS/data/tecservices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6a0bf582d739a7f6c45d8071c699268058e26091
--- /dev/null
+++ b/examples/DDCMS/data/tecservices.xml
@@ -0,0 +1,924 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <ConstantsSection label="tecservices.xml" eval="true">
+    <Constant name="zero" value="0.0*fm"/>
+    <Constant name="Rin" value="[tec:WheelR]"/>
+    <Constant name="Rout" value="[tec:OuterSkinRin]"/>
+    <Constant name="Dz" value="[tec:TECDz]"/>
+    <Constant name="ChannelWidth" value="50*mm/([Rin]+0.5*30*mm)"/>
+    <Constant name="ChannelRin" value="[Rin]"/>
+    <Constant name="ChannelRout" value="[Rin]+30*mm"/>
+    <Constant name="ChannelHeight" value="1538*mm"/>
+    <Constant name="ChannelZ" value="0.5*[ChannelHeight]-[Dz]"/>
+    <!--[tec:Wheel0Z]-[tec:ZPos]-0.5*[tecwheel:DiskT]+0.5*[ChannelHeight]-77.5*mm"/-->
+    <Constant name="ChannelN" value="[tecwheel:FixServN]"/>
+    <Constant name="ChannelFi" value="[tecwheel:FixServFi]"/>
+    <Constant name="ChannelEndInsertWidth" value="[ChannelWidth]"/>
+    <Constant name="ChannelEndInsertRin" value="[ChannelRin]"/>
+    <Constant name="ChannelEndInsertRout" value="[ChannelRout]"/>
+    <Constant name="ChannelEndInsertHeight" value="21*mm"/>
+    <Constant name="ChannelEndInsertZ" value="0.5*[ChannelEndInsertHeight]-0.5*[ChannelHeight]"/>
+    <!--[tec:Wheel0Z]-[tec:ZPos]-0.5*[tecwheel:DiskT]+0.5*[ChannelHeight]-77.5*mm"/-->
+    <Constant name="AxialGroundingWidth" value="20*mm/([Rin]+0.5*2.5*mm)"/>
+    <Constant name="AxialGroundingRin" value="[Rin]"/>
+    <Constant name="AxialGroundingRout" value="[Rin]+2.5*mm"/>
+    <Constant name="AxialGroundingHeight" value="1538*mm"/>
+    <Constant name="AxialGroundingFi" value="0.5*[ChannelWidth]+0.5*[AxialGroundingWidth]"/>
+    <Constant name="GasPipeRin" value="0.5*10*mm"/>
+    <Constant name="GasPipeRout" value="0.5*12*mm"/>
+    <Constant name="GasPipeRpos" value="1119*mm"/>
+    <Constant name="GasPipeZ" value="[ChannelZ]+0.5*[ChannelHeight]"/>
+    <Constant name="GasPipeHeight" value="1460*mm"/>
+    <Constant name="GasPipePhi1" value="21.8*deg"/>
+    <Constant name="GasPipePhi2" value="66.8*deg"/>
+    <Constant name="GasPipePhi3" value="156.8*deg"/>
+    <Constant name="CoolPipeRin" value="0.5*11*mm"/>
+    <Constant name="CoolPipeRout" value="0.5*12*mm"/>
+    <Constant name="CoolPipeHeightS" value="1347*mm"/>
+    <Constant name="CoolPipeHeightL" value="1487*mm"/>
+    <Constant name="CoolPipeRpos" value="[Rin]+16.5*mm"/>
+    <Constant name="CoolPipeZ" value="[ChannelZ]+0.5*[ChannelHeight]"/>
+    <Constant name="CoolPipePhi1" value="-8.0*deg"/>
+    <!--relative to Service Channel -->
+    <Constant name="CoolPipePhi2" value="-6.33*deg"/>
+    <Constant name="CoolPipePhi3" value="-4.66*deg"/>
+    <Constant name="CoolPipePhi4" value="-3.0*deg"/>
+    <Constant name="CoolPipePhi5" value="3*deg"/>
+    <Constant name="CoolPipePhi6" value="4.66*deg"/>
+    <Constant name="CoolPipePhi7" value="6.33*deg"/>
+    <Constant name="CoolPipePhi8" value="8.0*deg"/>
+    <Constant name="CableRout" value="[Rout]-[CoolPipeRpos]"/>
+    <Constant name="CableBulkTo8" value="[Dz]-([tec:Wheel8Z]-[tec:ZPos]) - (2*[Dz]-[ChannelHeight])"/>
+    <Constant name="CableHeight86B" value="0.5*([tec:Wheel8Z]-[tec:Wheel6Z])+[CableBulkTo8]-0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight86F" value="0.5*([tec:Wheel8Z]-[tec:Wheel6Z])+[CableBulkTo8]+0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight54B" value="([tec:Wheel8Z]-[tec:Wheel5Z]) + 0.5*([tec:Wheel5Z]-[tec:Wheel4Z])+[CableBulkTo8]-0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight54F" value="([tec:Wheel8Z]-[tec:Wheel5Z]) + 0.5*([tec:Wheel5Z]-[tec:Wheel4Z])+[CableBulkTo8]+0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight32B" value="([tec:Wheel8Z]-[tec:Wheel3Z]) + 0.5*([tec:Wheel3Z]-[tec:Wheel2Z])+[CableBulkTo8]-0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight32F" value="([tec:Wheel8Z]-[tec:Wheel3Z]) + 0.5*([tec:Wheel3Z]-[tec:Wheel2Z])+[CableBulkTo8]+0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight10B" value="([tec:Wheel8Z]-[tec:Wheel1Z]) + 0.5*([tec:Wheel1Z]-[tec:Wheel0Z])+[CableBulkTo8]-0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="CableHeight10F" value="([tec:Wheel8Z]-[tec:Wheel1Z]) + 0.5*([tec:Wheel1Z]-[tec:Wheel0Z])+[CableBulkTo8]+0.5*[tecpetpar:PetalContThick]"/>
+    <Constant name="PhiCableRout" value="[Rout]"/>
+    <Constant name="PhiCableRin" value="[GasPipeRpos]+[GasPipeRout]"/>
+    <Constant name="PhiCableWidth" value="8*deg"/>
+    <Constant name="PhiCablePhiF" value="[ChannelFi]+[CoolPipePhi8]+asin([CableRout]/[CoolPipeRpos])"/>
+    <Constant name="PhiCablePhiB" value="[ChannelFi]+[CoolPipePhi1]-asin([CableRout]/[CoolPipeRpos])"/>
+    <Constant name="PhiCableZLF" value="[CoolPipeZ]-[CableHeight54F]-0.5*[PhiCableHeightLF]"/>
+    <!-- the Lower part for frontpetal-->
+    <Constant name="PhiCableHeightLF" value="[ChannelHeight]-[CableHeight54F]"/>
+    <Constant name="PhiCableZUF" value="[CoolPipeZ]-[CableHeight54F]+0.5*[PhiCableHeightUF]"/>
+    <!-- the Upper part for frontpetal-->
+    <Constant name="PhiCableHeightUF" value="[CableHeight54F]"/>
+    <Constant name="PhiCableZLB" value="[CoolPipeZ]-[CableHeight54B]-0.5*[PhiCableHeightLB]"/>
+    <!-- the Lower part for backpetal-->
+    <Constant name="PhiCableHeightLB" value="[ChannelHeight]-[CableHeight54B]"/>
+    <Constant name="PhiCableZUB" value="[CoolPipeZ]-[CableHeight54B]+0.5*[PhiCableHeightUB]"/>
+    <!-- the Upper part for backpetal-->
+    <Constant name="PhiCableHeightUB" value="[CableHeight54B]"/>
+    <Constant name="CraneBracketRin" value="[Rin]"/>
+    <Constant name="CraneBracketRout" value="[GasPipeRpos]-[GasPipeRout]"/>
+    <Constant name="CraneBracketHeight" value="[tecwheel:DiskT]"/>
+    <Constant name="CraneBracketWidth" value="2*atan(49.5*mm/[CraneBracketRout])*rad"/>
+    <Constant name="CraneBracketPhi1" value="90*deg"/>
+    <Constant name="CraneBracketPhi2" value="315*deg"/>
+    <Constant name="CraneBracketPhi3" value="225*deg"/>
+  </ConstantsSection>
+  <SolidSection label="tecservices.xml">
+    <Tubs name="TECServices" rMin="[Rin]" rMax="[Rout]" dz="[Dz]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECServChannel" rMin="[ChannelRin]" rMax="[ChannelRout]" dz="0.5*[ChannelHeight]" startPhi="-0.5*[ChannelWidth]" deltaPhi="[ChannelWidth]"/>
+    <Tubs name="TECAxGrounding" rMin="[AxialGroundingRin]" rMax="[AxialGroundingRout]" dz="0.5*[ChannelHeight]" startPhi="-0.5*[AxialGroundingWidth]" deltaPhi="[AxialGroundingWidth]"/>
+    <Tubs name="TECChannelEndInsert" rMin="[ChannelEndInsertRin]" rMax="[ChannelEndInsertRout]" dz="0.5*[ChannelEndInsertHeight]" startPhi="-0.5*[ChannelEndInsertWidth]" deltaPhi="[ChannelEndInsertWidth]"/>
+    <Tubs name="TECGasPipe" rMin="[GasPipeRin]" rMax="[GasPipeRout]" dz="0.5*[GasPipeHeight]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCoolPipeS" rMin="[CoolPipeRin]" rMax="[CoolPipeRout]" dz="0.5*[CoolPipeHeightS]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCoolPipeL" rMin="[CoolPipeRin]" rMax="[CoolPipeRout]" dz="0.5*[CoolPipeHeightL]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCoolantS" rMin="[zero]" rMax="[CoolPipeRin]" dz="0.5*[CoolPipeHeightS]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCoolantL" rMin="[zero]" rMax="[CoolPipeRin]" dz="0.5*[CoolPipeHeightL]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable86B" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight86B]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable86F" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight86F]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable54B" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight54B]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable54F" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight54F]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable32B" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight32B]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable32F" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight32F]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable10B" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight10B]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECCable10F" rMin="[CoolPipeRout]" rMax="[CableRout]" dz="0.5*[CableHeight10F]" startPhi="0*deg" deltaPhi="360*deg"/>
+    <Tubs name="TECPhiCableLF" rMin="[PhiCableRin]" rMax="[PhiCableRout]" dz="0.5*[PhiCableHeightLF]" startPhi="0*deg" deltaPhi="[PhiCableWidth]"/>
+    <Tubs name="TECPhiCableUF" rMin="[PhiCableRin]" rMax="[PhiCableRout]" dz="0.5*[PhiCableHeightUF]" startPhi="0*deg" deltaPhi="[PhiCableWidth]"/>
+    <Tubs name="TECPhiCableLB" rMin="[PhiCableRin]" rMax="[PhiCableRout]" dz="0.5*[PhiCableHeightLB]" startPhi="-[PhiCableWidth]" deltaPhi="[PhiCableWidth]"/>
+    <Tubs name="TECPhiCableUB" rMin="[PhiCableRin]" rMax="[PhiCableRout]" dz="0.5*[PhiCableHeightUB]" startPhi="-[PhiCableWidth]" deltaPhi="[PhiCableWidth]"/>
+    <Tubs name="TECCCraneBracket" rMin="[CraneBracketRin]" rMax="[CraneBracketRout]" dz="0.5*[CraneBracketHeight]" startPhi="-0.5*[CraneBracketWidth]" deltaPhi="[CraneBracketWidth]"/>
+  </SolidSection>
+  <LogicalPartSection label="tecservices.xml">
+    <!-- Service Channel -->
+    <LogicalPart name="TECServices" category="unspecified">
+      <rSolid name="tecservices:TECServices"/>
+      <rMaterial name="materials:Air"/>
+    </LogicalPart>
+    <LogicalPart name="TECServChannel" category="unspecified">
+      <rSolid name="tecservices:TECServChannel"/>
+      <rMaterial name="tecmaterial:TEC_ServChan"/>
+    </LogicalPart>
+    <LogicalPart name="TECAxGrounding" category="unspecified">
+      <rSolid name="tecservices:TECAxGrounding"/>
+      <rMaterial name="tecmaterial:TEC_AxGrounding"/>
+    </LogicalPart>
+    <LogicalPart name="TECChannelEndInsert" category="unspecified">
+      <rSolid name="tecservices:TECChannelEndInsert"/>
+      <rMaterial name="tecmaterial:TEC_ServChanIns"/>
+    </LogicalPart>
+    <!-- Gas Pipes -->
+    <LogicalPart name="TECGasPipe" category="unspecified">
+      <rSolid name="tecservices:TECGasPipe"/>
+      <rMaterial name="tecmaterial:TEC_GasPipe"/>
+    </LogicalPart>
+    <!-- Cooling Pipes -->
+    <LogicalPart name="TECCoolPipeS" category="unspecified">
+      <rSolid name="tecservices:TECCoolPipeS"/>
+      <rMaterial name="tecmaterial:TEC_CoolPipe"/>
+    </LogicalPart>
+    <LogicalPart name="TECCoolPipeL" category="unspecified">
+      <rSolid name="tecservices:TECCoolPipeL"/>
+      <rMaterial name="tecmaterial:TEC_CoolPipe"/>
+    </LogicalPart>
+    <LogicalPart name="TECCoolantS" category="unspecified">
+      <rSolid name="tecservices:TECCoolantS"/>
+      <rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+    </LogicalPart>
+    <LogicalPart name="TECCoolantL" category="unspecified">
+      <rSolid name="tecservices:TECCoolantL"/>
+      <rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable86B" category="unspecified">
+      <rSolid name="tecservices:TECCable86B"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable86F" category="unspecified">
+      <rSolid name="tecservices:TECCable86F"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable54B" category="unspecified">
+      <rSolid name="tecservices:TECCable54B"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable54F" category="unspecified">
+      <rSolid name="tecservices:TECCable54F"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable32B" category="unspecified">
+      <rSolid name="tecservices:TECCable32B"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable32F" category="unspecified">
+      <rSolid name="tecservices:TECCable32F"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable10B" category="unspecified">
+      <rSolid name="tecservices:TECCable10B"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <LogicalPart name="TECCable10F" category="unspecified">
+      <rSolid name="tecservices:TECCable10F"/>
+      <rMaterial name="tecmaterial:TEC_AxCable"/>
+    </LogicalPart>
+    <!-- Phi Cables -->
+    <LogicalPart name="TECPhiCableLF" category="unspecified">
+      <rSolid name="tecservices:TECPhiCableLF"/>
+      <rMaterial name="tecmaterial:TEC_PhiCableL"/>
+    </LogicalPart>
+    <LogicalPart name="TECPhiCableUF" category="unspecified">
+      <rSolid name="tecservices:TECPhiCableUF"/>
+      <rMaterial name="tecmaterial:TEC_PhiCableU"/>
+    </LogicalPart>
+    <LogicalPart name="TECPhiCableLB" category="unspecified">
+      <rSolid name="tecservices:TECPhiCableLB"/>
+      <rMaterial name="tecmaterial:TEC_PhiCableL"/>
+    </LogicalPart>
+    <LogicalPart name="TECPhiCableUB" category="unspecified">
+      <rSolid name="tecservices:TECPhiCableUB"/>
+      <rMaterial name="tecmaterial:TEC_PhiCableU"/>
+    </LogicalPart>
+    <!-- Brackets-->
+    <LogicalPart name="TECCCraneBracket" category="unspecified">
+      <rSolid name="tecservices:TECCCraneBracket"/>
+      <rMaterial name="tecmaterial:TEC_CraneBracket"/>
+    </LogicalPart>
+  </LogicalPartSection>
+  <!-- Service Channel -->
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECServChannel"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [ChannelZ]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServChannel"/>
+    <String name="ChildName" value="tecservices:TECChannelEndInsert"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="0"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [ChannelEndInsertZ]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECAxGrounding"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[AxialGroundingFi]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [ChannelZ]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECAxGrounding"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]-[AxialGroundingFi]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [ChannelZ]  </Vector>
+  </Algorithm>
+  <!--Gas Pipes-->
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECGasPipe"/>
+    <Numeric name="N" value="2"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[GasPipePhi1]"/>
+    <Numeric name="Radius" value="[GasPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[GasPipeHeight]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECGasPipe"/>
+    <Numeric name="N" value="2"/>
+    <Numeric name="StartCopyNo" value="3"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[GasPipePhi2]"/>
+    <Numeric name="Radius" value="[GasPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[GasPipeHeight]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECGasPipe"/>
+    <Numeric name="N" value="2"/>
+    <Numeric name="StartCopyNo" value="5"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[GasPipePhi3]"/>
+    <Numeric name="Radius" value="[GasPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[GasPipeHeight]  </Vector>
+  </Algorithm>
+  <!-- Axial CoolingPipes and cables -->
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi1]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi1]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable86B"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi1]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight86B]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi2]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi2]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable54B"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi2]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight54B]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi3]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi3]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable32B"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi3]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight32B]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi4]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi4]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable10B"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi4]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight10B]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="2*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi5]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="2*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi5]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable10F"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi5]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight10F]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="3*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi6]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantL"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="3*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi6]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightL]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable32F"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi6]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight32F]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="3*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi7]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="3*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi7]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable54F"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi7]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight54F]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolPipeS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="4*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi8]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCoolantS"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="4*[ChannelN]+1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi8]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CoolPipeHeightS]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCable86F"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[ChannelFi]+[CoolPipePhi8]"/>
+    <Numeric name="Radius" value="[CoolPipeRpos]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [CoolPipeZ]-0.5*[CableHeight86F]  </Vector>
+  </Algorithm>
+  <!-- Phi Cable -->
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECPhiCableLF"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[PhiCablePhiF]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [PhiCableZLF]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECPhiCableUF"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[PhiCablePhiF]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [PhiCableZUF]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECPhiCableLB"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[PhiCablePhiB]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [PhiCableZLB]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECPhiCableUB"/>
+    <Numeric name="N" value="[ChannelN]"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[PhiCablePhiB]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [PhiCableZUB]  </Vector>
+  </Algorithm>
+  <!-- Brackets -->
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="1"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel0Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="2"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel0Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="3"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel0Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="4"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel1Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="5"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel1Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="6"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel1Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="7"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel2Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="8"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel2Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="9"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel2Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="10"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel3Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="11"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel3Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="12"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel3Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="13"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel4Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="14"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel4Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="15"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel4Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="16"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel5Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="17"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel5Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="18"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel5Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="19"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel6Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="20"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel6Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="21"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel6Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="22"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel7Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="23"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel7Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="24"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel7Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="25"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel8Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="26"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel8Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="27"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:Wheel8Z]-[tec:ZPos]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="28"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi1]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:TECDz]-[tecbackplate:Thick]+0.5*[tecwheel:DiskT]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="29"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi2]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:TECDz]-[tecbackplate:Thick]+0.5*[tecwheel:DiskT]  </Vector>
+  </Algorithm>
+  <Algorithm name="track:DDTrackerAngular">
+    <rParent name="tecservices:TECServices"/>
+    <String name="ChildName" value="tecservices:TECCCraneBracket"/>
+    <Numeric name="N" value="1"/>
+    <Numeric name="StartCopyNo" value="30"/>
+    <Numeric name="IncrCopyNo" value="1"/>
+    <Numeric name="RangeAngle" value="360*deg"/>
+    <Numeric name="StartAngle" value="[CraneBracketPhi3]"/>
+    <Numeric name="Radius" value="[zero]"/>
+    <Vector name="Center" type="numeric" nEntries="3"> 0, 0, [tec:TECDz]-[tecbackplate:Thick]+0.5*[tecwheel:DiskT]  </Vector>
+  </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecwheel.xml b/examples/DDCMS/data/tecwheel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..af143d5f59cb56164369f086fb7471c4777cf657
--- /dev/null
+++ b/examples/DDCMS/data/tecwheel.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecwheel.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="WheelRmax" value="110.30*cm"/>
+		<Constant name="WheelT" value="12.22*cm"/>
+		<Constant name="DiskT" value="1.680*cm"/>
+		<Constant name="NomexT" value="1.600*cm"/>
+		<Constant name="NomexRmax" value="[WheelRmax] - [GroundingRingThick] "/>
+		<Constant name="PetalContN" value="8"/>
+		<Constant name="PetalContZ" value="3.583*cm"/>
+		<Constant name="PetalContFiF" value="0.00*deg"/>
+		<Constant name="PetalContFiB" value="22.5*deg"/>
+		<Constant name="InsertR" value="13.7514*mm"/>
+		<Constant name="InsertL" value="16.0*mm"/>
+		<Constant name="InsertN" value="8"/>
+		<Constant name="InsertR1" value="38.00*cm"/>
+		<Constant name="InsertR2" value="468.5451*mm"/>
+		<Constant name="InsertR3" value="84.00*cm"/>
+		<Constant name="InsertR4" value="84.00*cm"/>
+		<Constant name="InsertR5" value="983.5215*mm"/>
+		<Constant name="InsertR6" value="983.5215*mm"/>
+		<Constant name="InsertFi1" value="22.50*deg"/>
+		<Constant name="InsertFi2" value="44.2051*deg"/>
+		<Constant name="InsertFi3" value="13.50*deg"/>
+		<Constant name="InsertFi4" value="31.50*deg"/>
+		<Constant name="InsertFi5" value="8.6213*deg"/>
+		<Constant name="InsertFi6" value="35.6213*deg"/>
+		<Constant name="FixSuppA" value="1485.33*mm"/>
+		<!--Area to calculate the deltaPhi-->
+		<Constant name="FixSuppR" value="22.4428*mm*mm"/>
+		<Constant name="FixSuppW" value="40.00*mm"/>
+		<!--old-->
+		<Constant name="FixSuppT" value="1.000*cm"/>
+		<Constant name="FixSuppN" value="4"/>
+		<Constant name="FixSuppFi" value="-67.50*deg"/>
+		<Constant name="FixServR" value="22.5*mm"/>
+		<Constant name="FixServW" value="80.0*mm / ([WheelRmax]-0.5*[FixServR])"/>
+		<Constant name="FixServT" value="8.5*mm"/>
+		<Constant name="FixServN" value="8"/>
+		<Constant name="FixServFi" value="-11.25*deg"/>
+		<Constant name="OptConnRmin" value="[WheelRmax] - [OptConnHeight]"/>
+		<!--depreciated-->
+		<Constant name="OptConnRmax" value="[WheelRmax]"/>
+		<!--depreciated-->
+		<Constant name="OptConnHeight" value="171*mm"/>
+		<Constant name="OptConnThick" value="46*mm"/>
+		<Constant name="OptConnW" value="45*deg-[tecpetpar:PetalContWidth]"/>
+		<!--there is not enough room for the real width-->
+		<Constant name="OptConnN" value="8"/>
+		<Constant name="OptConnT1" value="2.475*cm"/>
+		<Constant name="OptConnT2" value="2.25*cm"/>
+		<Constant name="OptConnT3" value="1.80*cm"/>
+		<Constant name="OptConnZ1" value="([DiskT]+[OptConnT1])/2"/>
+		<Constant name="OptConnZ2" value="([DiskT]+[OptConnT2])/2"/>
+		<Constant name="OptConnZ3" value="([DiskT]+[OptConnT3])/2"/>
+		<Constant name="OptConnFI1" value="[PetalContFiF]+[OptConnW]/2+[tecpetpar:PetalContWidth]/2"/>
+		<Constant name="OptConnFI2" value="[PetalContFiB]+[OptConnW]/2+[tecpetpar:PetalContWidth]/2"/>
+		<Constant name="CableW" value="0.500*cm"/>
+		<Constant name="CableT" value="0.210*cm"/>
+		<Constant name="CableTolerR" value="0.350*cm"/>
+		<Constant name="CableZ2" value="([DiskT]+[CableT])/2"/>
+		<Constant name="CableZ1" value="-[CableZ2]"/>
+		<Constant name="CableFi1" value="-11.25*deg"/>
+		<Constant name="CableFi2" value="11.25*deg"/>
+		<Constant name="FixServRmin" value="[WheelRmax]-[FixServR]"/>
+		<Constant name="CableRmax" value="[WheelRmax]-[CableTolerR]"/>
+		<Constant name="PetalConnZ" value="0"/>
+		<Constant name="PetalInManifHeight" value="14.59*mm"/>
+		<Constant name="PetalInManifWidth" value="2*atan(64.5*mm/(2*[tecpetpar:PetalRmax]-[PetalInManifHeight]))*rad"/>
+		<Constant name="PetalOutManifHeight" value="18.04*mm"/>
+		<Constant name="PetalOutManifWidth" value="2*atan(46*mm/(2*[tecpetpar:PetalRmax]+[PetalInManifHeight]))*rad"/>
+		<Constant name="PetalManifThick" value="10*mm"/>
+		<Constant name="GroundingRingThick" value="0.150*mm"/>
+		<!-- this "thick" goes in R direction! -->
+		<Constant name="GroundingRingWidth" value="15*mm"/>
+		<Constant name="AlignHolderRin" value="[NomexRmax]-12.5*mm"/>
+		<Constant name="AlignHolderRout" value="[NomexRmax]"/>
+		<Constant name="AlignHolderWidth" value="2*atan(25.98*mm/[AlignHolderRout])*rad"/>
+		<Constant name="AlignHolderStartPhi" value="-67.5*deg"/>
+	</ConstantsSection>
+	<SolidSection label="tecwheel.xml">
+		<Tubs name="TECWheelInsert" rMin="[zero]" rMax="[InsertR]" dz="[InsertL]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECGroundingRing" rMin="[NomexRmax]" rMax="[WheelRmax]" dz="[GroundingRingWidth]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECFixService" rMin="[FixServRmin]" rMax="[NomexRmax]" dz="[FixServT]/2" startPhi="-[FixServW]/2" deltaPhi="[FixServW]"/>
+		<Tubs name="TECAlignHolder" rMin="[AlignHolderRin]" rMax="[AlignHolderRout]" dz="[NomexT]/2" startPhi="-[AlignHolderWidth]/2" deltaPhi="[AlignHolderWidth]"/>
+		<!-- the same for every petal -->
+		<Tubs name="TECInnerManifold" rMin="[tecpetpar:PetalRmax]-[PetalInManifHeight]" rMax="[tecpetpar:PetalRmax]" dz="[PetalManifThick]/2" startPhi="-[PetalInManifWidth]/2" deltaPhi="[PetalInManifWidth]"/>
+		<Tubs name="TECOuterManifold" rMin="[tecpetpar:PetalRmax]" rMax="[tecpetpar:PetalRmax]+[PetalOutManifHeight]" dz="[PetalManifThick]/2" startPhi="-[PetalOutManifWidth]/2" deltaPhi="[PetalOutManifWidth]"/>
+		<Tubs name="TECOptConnector" rMin="[tecpetpar:PetalRmax]-[OptConnHeight]" rMax="[tecpetpar:PetalRmax]" dz="[OptConnThick]/2" startPhi="-[OptConnW]/2" deltaPhi="[OptConnW]"/>
+		<Box name="TECCCUM" dx="[tecpetpar:CCUMWidth]/2" dy="[tecpetpar:CCUMHeight]/2" dz="[tecpetpar:CCUMThick]/2"/>
+	</SolidSection>
+	<LogicalPartSection label="tecwheel.xml">
+		<LogicalPart name="TECWheelInsert" category="unspecified">
+			<rSolid name="tecwheel:TECWheelInsert"/>
+			<rMaterial name="tecmaterial:TEC_wheelinsert"/>
+		</LogicalPart>
+		<LogicalPart name="TECFixService" category="unspecified">
+			<rSolid name="tecwheel:TECFixService"/>
+			<rMaterial name="tecmaterial:TEC_FixServ"/>
+		</LogicalPart>
+		<LogicalPart name="TECGroundingRing" category="unspecified">
+			<rSolid name="tecwheel:TECGroundingRing"/>
+			<rMaterial name="tecmaterial:TEC_GroundingRing"/>
+		</LogicalPart>
+		<LogicalPart name="TECAlignHolder" category="unspecified">
+			<rSolid name="tecwheel:TECAlignHolder"/>
+			<rMaterial name="tecmaterial:TEC_AlignHolder"/>
+		</LogicalPart>
+		<!-- the same for all petals-->
+		<LogicalPart name="TECInnerManifold" category="unspecified">
+			<rSolid name="tecwheel:TECInnerManifold"/>
+			<rMaterial name="tecmaterial:TEC_InnerManifold"/>
+		</LogicalPart>
+		<LogicalPart name="TECOuterManifold" category="unspecified">
+			<rSolid name="tecwheel:TECOuterManifold"/>
+			<rMaterial name="tecmaterial:TEC_InnerManifold"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptConnector" category="unspecified">
+			<rSolid name="tecwheel:TECOptConnector"/>
+			<rMaterial name="tecmaterial:TEC_OptoCon"/>
+		</LogicalPart>
+		<LogicalPart name="TECCCUM" category="unspecified">
+			<rSolid name="tecwheel:TECCCUM"/>
+			<rMaterial name="tecmaterial:TEC_CCUM"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecwheel6.xml b/examples/DDCMS/data/tecwheel6.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1cef9866bd6f700deed3b9f50d391b07f17a2839
--- /dev/null
+++ b/examples/DDCMS/data/tecwheel6.xml
@@ -0,0 +1,237 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- This is the special disk which holdes the beam splitter! -->
+    <ConstantsSection label="tecwheel6.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FixSuppRmax" value="[tecpetal3:PetalContRmin]+            [tecwheel:FixSuppR]"/>
+        <Constant name="FixSuppW" value="2*[tecwheel:FixSuppA]/([FixSuppRmax]*[FixSuppRmax]-[tecpetal3:PetalContRmin]*[tecpetal3:PetalContRmin])"/>
+        <!-- calculate the width to fit the area at this specific radius! thus the volume will be constant!-->
+        <Constant name="CableL" value="([tecwheel:CableRmax]-[tecring1:Rin])"/>
+        <Constant name="CableR" value="([tecwheel:CableRmax]+[tecring1:Rin])/2"/>
+        <Constant name="BeamsplitterHeight" value="68.62*mm"/>
+        <Constant name="BeamsplitterWidth" value="49.25*mm"/>
+        <Constant name="BeamsplitterThick" value="[tecwheel:NomexT]"/>
+        <Constant name="BeamsplitterRA" value="845.13*mm"/>
+        <Constant name="BeamsplitterRB" value="570.17*mm"/>
+        <Constant name="BeamsplitterStartPhi" value="114*deg"/>
+    </ConstantsSection>
+    <SolidSection label="tecwheel6.xml">
+        <Tubs name="TECWheel6" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:WheelT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+        <Tubs name="TECWheelDisk6" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:DiskT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+        <Tubs name="TECWheelNomex6" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:NomexRmax]" dz="[tecwheel:NomexT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+        <Tubs name="TECFixSupport6" rMin="[tecpetal3:PetalContRmin]" rMax="[FixSuppRmax]" dz="[tecwheel:FixSuppT]/2" startPhi="-[FixSuppW]/2" deltaPhi="[FixSuppW]"/>
+        <Tubs name="TECOptConnector6" rMin="[tecwheel:OptConnRmin]" rMax="[tecwheel:OptConnRmax]" dz="[tecwheel:OptConnT2]/2" startPhi="-[tecwheel:OptConnW]/2" deltaPhi="[tecwheel:OptConnW]"/>
+        <Box name="TECBeamsplitter" dx="0.5*[BeamsplitterHeight]" dy="0.5*[BeamsplitterWidth]" dz="0.5*[BeamsplitterThick]"/>
+    </SolidSection>
+    <LogicalPartSection label="tecwheel6.xml">
+        <LogicalPart name="TECWheel6" category="unspecified">
+            <rSolid name="tecwheel6:TECWheel6"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TECWheelDisk6" category="unspecified">
+            <rSolid name="tecwheel6:TECWheelDisk6"/>
+            <rMaterial name="tecmaterial:TEC_wheel6_CF"/>
+        </LogicalPart>
+        <LogicalPart name="TECWheelNomex6" category="unspecified">
+            <rSolid name="tecwheel6:TECWheelNomex6"/>
+            <rMaterial name="tecmaterial:TEC_wheel6_Nomex"/>
+        </LogicalPart>
+        <LogicalPart name="TECFixSupport6" category="unspecified">
+            <rSolid name="tecwheel6:TECFixSupport6"/>
+            <rMaterial name="tecmaterial:TEC_Fixframe"/>
+        </LogicalPart>
+        <LogicalPart name="TECOptConnector6" category="unspecified">
+            <rSolid name="tecwheel6:TECOptConnector6"/>
+            <rMaterial name="tecmaterial:TEC_OptoCon"/>
+        </LogicalPart>
+        <LogicalPart name="TECBeamsplitter" category="unspecified">
+            <rSolid name="tecwheel6:TECBeamsplitter"/>
+            <rMaterial name="tecmaterial:TEC_Beamsplitter"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <PosPartSection label="tecwheel6.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tecwheel6:TECWheel6"/>
+            <rChild name="tecwheel6:TECWheelDisk6"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tecwheel6:TECWheelDisk6"/>
+            <rChild name="tecwheel6:TECWheelNomex6"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tecwheel6:TECWheelDisk6"/>
+            <rChild name="tecwheel:TECGroundingRing"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheel6"/>
+        <String name="ChildName" value="tecpetal3f:TECPetalCont3F"/>
+        <Numeric name="N" value="[tecwheel:PetalContN]"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:PetalContFiF]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3">
+            0, 0, -[tecwheel:PetalContZ]  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheel6"/>
+        <String name="ChildName" value="tecpetal3b:TECPetalCont3B"/>
+        <Numeric name="N" value="[tecwheel:PetalContN]"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:PetalContFiB]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3">
+            0, 0, [tecwheel:PetalContZ]  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECWheelInsert"/>
+        <Numeric name="N" value="[tecwheel:InsertN]"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:InsertFi1]"/>
+        <Numeric name="Radius" value="[tecwheel:InsertR1]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECWheelInsert"/>
+        <Numeric name="N" value="[tecwheel:InsertN]"/>
+        <Numeric name="StartCopyNo" value="9"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:InsertFi2]"/>
+        <Numeric name="Radius" value="[tecwheel:InsertR2]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECWheelInsert"/>
+        <Numeric name="N" value="[tecwheel:InsertN]"/>
+        <Numeric name="StartCopyNo" value="17"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:InsertFi3]"/>
+        <Numeric name="Radius" value="[tecwheel:InsertR3]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECWheelInsert"/>
+        <Numeric name="N" value="[tecwheel:InsertN]"/>
+        <Numeric name="StartCopyNo" value="25"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:InsertFi4]"/>
+        <Numeric name="Radius" value="[tecwheel:InsertR4]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECWheelInsert"/>
+        <Numeric name="N" value="[tecwheel:InsertN]"/>
+        <Numeric name="StartCopyNo" value="33"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:InsertFi5]"/>
+        <Numeric name="Radius" value="[tecwheel:InsertR5]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECWheelInsert"/>
+        <Numeric name="N" value="[tecwheel:InsertN]"/>
+        <Numeric name="StartCopyNo" value="41"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:InsertFi6]"/>
+        <Numeric name="Radius" value="[tecwheel:InsertR6]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel6:TECFixSupport6"/>
+        <Numeric name="N" value="[tecwheel:FixSuppN]"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:FixSuppFi]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECFixService"/>
+        <Numeric name="N" value="[tecwheel:FixServN]"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:FixServFi]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheel6"/>
+        <String name="ChildName" value="tecwheel6:TECOptConnector6"/>
+        <Numeric name="N" value="[tecwheel:OptConnN]"/>
+        <Numeric name="StartCopyNo" value="2"/>
+        <Numeric name="IncrCopyNo" value="2"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:OptConnFI1]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 
+            0, 0, -[tecwheel:OptConnZ2]  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheel6"/>
+        <String name="ChildName" value="tecwheel6:TECOptConnector6"/>
+        <Numeric name="N" value="[tecwheel:OptConnN]"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="2"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:OptConnFI2]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 
+            0, 0, [tecwheel:OptConnZ2]  </Vector>
+    </Algorithm>
+    <!-- Alignment Holder (Sphere holder) -->
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel:TECAlignHolder"/>
+        <Numeric name="N" value="4"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel:AlignHolderStartPhi]"/>
+        <Numeric name="Radius" value="[zero]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <!-- Beamsplitter -->
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel6:TECBeamsplitter"/>
+        <Numeric name="N" value="8"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel6:BeamsplitterStartPhi]"/>
+        <Numeric name="Radius" value="[tecwheel6:BeamsplitterRA]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerAngular">
+        <rParent name="tecwheel6:TECWheelNomex6"/>
+        <String name="ChildName" value="tecwheel6:TECBeamsplitter"/>
+        <Numeric name="N" value="8"/>
+        <Numeric name="StartCopyNo" value="9"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Numeric name="RangeAngle" value="360*deg"/>
+        <Numeric name="StartAngle" value="[tecwheel6:BeamsplitterStartPhi]"/>
+        <Numeric name="Radius" value="[tecwheel6:BeamsplitterRB]"/>
+        <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecwheela.xml b/examples/DDCMS/data/tecwheela.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e2a82e67d1384a0465ff1eb4414036be3c36385
--- /dev/null
+++ b/examples/DDCMS/data/tecwheela.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecwheela.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="FixSuppRmax" value="[tecpetal0:PetalContRmin]+            [tecwheel:FixSuppR]"/>
+		<Constant name="FixSuppW" value="2*[tecwheel:FixSuppA]/([FixSuppRmax]*[FixSuppRmax]-[tecpetal0:PetalContRmin]*[tecpetal0:PetalContRmin])"/>
+		<!-- calculate the width to fit the area at this specific radius! thus the volume will be constant!-->
+		<Constant name="CableL" value="([tecwheel:CableRmax]-[tecring0:Rin])"/>
+		<Constant name="CableR" value="([tecwheel:CableRmax]+[tecring0:Rin])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecwheela.xml">
+		<Tubs name="TECWheelA" rMin="[tecpetal0:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:WheelT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelDiskA" rMin="[tecpetal0:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:DiskT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelNomexA" rMin="[tecpetal0:PetalContRmin]" rMax="[tecwheel:NomexRmax]" dz="[tecwheel:NomexT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECFixSupportA" rMin="[tecpetal0:PetalContRmin]" rMax="[FixSuppRmax]" dz="[tecwheel:FixSuppT]/2" startPhi="-[FixSuppW]/2" deltaPhi="[FixSuppW]"/>
+		<Tubs name="TECOptConnectorA" rMin="[tecwheel:OptConnRmin]" rMax="[tecwheel:OptConnRmax]" dz="[tecwheel:OptConnT1]/2" startPhi="-[tecwheel:OptConnW]/2" deltaPhi="[tecwheel:OptConnW]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecwheela.xml">
+		<LogicalPart name="TECWheelA" category="unspecified">
+			<rSolid name="tecwheela:TECWheelA"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelDiskA" category="unspecified">
+			<rSolid name="tecwheela:TECWheelDiskA"/>
+			<rMaterial name="tecmaterial:TEC_wheel_CF"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelNomexA" category="unspecified">
+			<rSolid name="tecwheela:TECWheelNomexA"/>
+			<rMaterial name="tecmaterial:TEC_wheel_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TECFixSupportA" category="unspecified">
+			<rSolid name="tecwheela:TECFixSupportA"/>
+			<rMaterial name="tecmaterial:TEC_Fixframe"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptConnectorA" category="unspecified">
+			<rSolid name="tecwheela:TECOptConnectorA"/>
+			<rMaterial name="tecmaterial:TEC_OptoCon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecwheela.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecwheela:TECWheelA"/>
+			<rChild name="tecwheela:TECWheelDiskA"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecwheela:TECWheelDiskA"/>
+			<rChild name="tecwheela:TECWheelNomexA"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecwheela:TECWheelDiskA"/>
+			<rChild name="tecwheel:TECGroundingRing"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelA"/>
+		<String name="ChildName" value="tecpetal0f:TECPetalCont0F"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiF]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, -[tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelA"/>
+		<String name="ChildName" value="tecpetal0b:TECPetalCont0B"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiB]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, [tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi1]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR1]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi2]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR2]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi3]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR3]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi4]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR4]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="33"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi5]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR5]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="41"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi6]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR6]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheela:TECFixSupportA"/>
+		<Numeric name="N" value="[tecwheel:FixSuppN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixSuppFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECFixService"/>
+		<Numeric name="N" value="[tecwheel:FixServN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixServFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelA"/>
+		<String name="ChildName" value="tecwheela:TECOptConnectorA"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI2]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, [tecwheel:OptConnZ1]  </Vector>
+	</Algorithm>
+	<!-- Alignment Holder (Sphere holder) -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheela:TECWheelNomexA"/>
+		<String name="ChildName" value="tecwheel:TECAlignHolder"/>
+		<Numeric name="N" value="4"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:AlignHolderStartPhi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecwheelb.xml b/examples/DDCMS/data/tecwheelb.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b1d8a3671b11898938b2e5290eeba3b6d75d8978
--- /dev/null
+++ b/examples/DDCMS/data/tecwheelb.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecwheelb.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="FixSuppRmax" value="[tecpetal3:PetalContRmin]+            [tecwheel:FixSuppR]"/>
+		<Constant name="FixSuppW" value="2*[tecwheel:FixSuppA]/([FixSuppRmax]*[FixSuppRmax]-[tecpetal3:PetalContRmin]*[tecpetal3:PetalContRmin])"/>
+		<!-- calculate the width to fit the area at this specific radius! thus the volume will be constant!-->
+		<Constant name="CableL" value="([tecwheel:CableRmax]-[tecring1:Rin])"/>
+		<Constant name="CableR" value="([tecwheel:CableRmax]+[tecring1:Rin])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecwheelb.xml">
+		<Tubs name="TECWheelB" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:WheelT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelDiskB" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:DiskT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelNomexB" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:NomexRmax]" dz="[tecwheel:NomexT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECFixSupportB" rMin="[tecpetal3:PetalContRmin]" rMax="[FixSuppRmax]" dz="[tecwheel:FixSuppT]/2" startPhi="-[FixSuppW]/2" deltaPhi="[FixSuppW]"/>
+		<Tubs name="TECOptConnectorB" rMin="[tecwheel:OptConnRmin]" rMax="[tecwheel:OptConnRmax]" dz="[tecwheel:OptConnT2]/2" startPhi="-[tecwheel:OptConnW]/2" deltaPhi="[tecwheel:OptConnW]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecwheelb.xml">
+		<LogicalPart name="TECWheelB" category="unspecified">
+			<rSolid name="tecwheelb:TECWheelB"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelDiskB" category="unspecified">
+			<rSolid name="tecwheelb:TECWheelDiskB"/>
+			<rMaterial name="tecmaterial:TEC_wheel_CF"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelNomexB" category="unspecified">
+			<rSolid name="tecwheelb:TECWheelNomexB"/>
+			<rMaterial name="tecmaterial:TEC_wheel_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TECFixSupportB" category="unspecified">
+			<rSolid name="tecwheelb:TECFixSupportB"/>
+			<rMaterial name="tecmaterial:TEC_Fixframe"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptConnectorB" category="unspecified">
+			<rSolid name="tecwheelb:TECOptConnectorB"/>
+			<rMaterial name="tecmaterial:TEC_OptoCon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecwheelb.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecwheelb:TECWheelB"/>
+			<rChild name="tecwheelb:TECWheelDiskB"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecwheelb:TECWheelDiskB"/>
+			<rChild name="tecwheelb:TECWheelNomexB"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tecwheelb:TECWheelDiskB"/>
+			<rChild name="tecwheel:TECGroundingRing"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelB"/>
+		<String name="ChildName" value="tecpetal3f:TECPetalCont3F"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiF]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, -[tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelB"/>
+		<String name="ChildName" value="tecpetal3b:TECPetalCont3B"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiB]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, [tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi1]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR1]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi2]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR2]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi3]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR3]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi4]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR4]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="33"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi5]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR5]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="41"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi6]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR6]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheelb:TECFixSupportB"/>
+		<Numeric name="N" value="[tecwheel:FixSuppN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixSuppFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECFixService"/>
+		<Numeric name="N" value="[tecwheel:FixServN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixServFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelB"/>
+		<String name="ChildName" value="tecwheelb:TECOptConnectorB"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="2"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI1]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, -[tecwheel:OptConnZ2]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelB"/>
+		<String name="ChildName" value="tecwheelb:TECOptConnectorB"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI2]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, [tecwheel:OptConnZ2]  </Vector>
+	</Algorithm>
+	<!-- Alignment Holder (Sphere holder) -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelb:TECWheelNomexB"/>
+		<String name="ChildName" value="tecwheel:TECAlignHolder"/>
+		<Numeric name="N" value="4"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:AlignHolderStartPhi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecwheelc.xml b/examples/DDCMS/data/tecwheelc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ad99f7da1bc0b4f5671374888b9c4266f61560fa
--- /dev/null
+++ b/examples/DDCMS/data/tecwheelc.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecwheelc.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="FixSuppRmax" value="[tecpetal3:PetalContRmin]+            [tecwheel:FixSuppR]"/>
+		<Constant name="FixSuppW" value="2*[tecwheel:FixSuppA]/([FixSuppRmax]*[FixSuppRmax]-[tecpetal3:PetalContRmin]*[tecpetal3:PetalContRmin])"/>
+		<!-- calculate the width to fit the area at this specific radius! thus the volume will be constant!-->
+		<Constant name="CableL" value="([tecwheel:CableRmax]-[tecring2:Rin])"/>
+		<Constant name="CableR" value="([tecwheel:CableRmax]+[tecring2:Rin])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecwheelc.xml">
+		<Tubs name="TECWheelC" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:WheelT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelDiskC" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:DiskT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelNomexC" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:NomexRmax]" dz="[tecwheel:NomexT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECFixSupportC" rMin="[tecpetal3:PetalContRmin]" rMax="[FixSuppRmax]" dz="[tecwheel:FixSuppT]/2" startPhi="-[FixSuppW]/2" deltaPhi="[FixSuppW]"/>
+		<Tubs name="TECOptConnectorC" rMin="[tecwheel:OptConnRmin]" rMax="[tecwheel:OptConnRmax]" dz="[tecwheel:OptConnT3]/2" startPhi="-[tecwheel:OptConnW]/2" deltaPhi="[tecwheel:OptConnW]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecwheelc.xml">
+		<LogicalPart name="TECWheelC" category="unspecified">
+			<rSolid name="tecwheelc:TECWheelC"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelDiskC" category="unspecified">
+			<rSolid name="tecwheelc:TECWheelDiskC"/>
+			<rMaterial name="tecmaterial:TEC_wheel_CF"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelNomexC" category="unspecified">
+			<rSolid name="tecwheelc:TECWheelNomexC"/>
+			<rMaterial name="tecmaterial:TEC_wheel_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TECFixSupportC" category="unspecified">
+			<rSolid name="tecwheelc:TECFixSupportC"/>
+			<rMaterial name="tecmaterial:TEC_Fixframe"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptConnectorC" category="unspecified">
+			<rSolid name="tecwheelc:TECOptConnectorC"/>
+			<rMaterial name="tecmaterial:TEC_OptoCon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecwheelc.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecwheelc:TECWheelC"/>
+			<rChild name="tecwheelc:TECWheelDiskC"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecwheelc:TECWheelDiskC"/>
+			<rChild name="tecwheelc:TECWheelNomexC"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tecwheelc:TECWheelDiskC"/>
+			<rChild name="tecwheel:TECGroundingRing"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelC"/>
+		<String name="ChildName" value="tecpetal6f:TECPetalCont6F"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiF]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, -[tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelC"/>
+		<String name="ChildName" value="tecpetal6b:TECPetalCont6B"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiB]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, [tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi1]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR1]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi2]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR2]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi3]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR3]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi4]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR4]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="33"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi5]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR5]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="41"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi6]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR6]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheelc:TECFixSupportC"/>
+		<Numeric name="N" value="[tecwheel:FixSuppN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixSuppFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECFixService"/>
+		<Numeric name="N" value="[tecwheel:FixServN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixServFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelC"/>
+		<String name="ChildName" value="tecwheelc:TECOptConnectorC"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="2"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI1]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, -[tecwheel:OptConnZ3]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelC"/>
+		<String name="ChildName" value="tecwheelc:TECOptConnectorC"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI2]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, [tecwheel:OptConnZ3]  </Vector>
+	</Algorithm>
+	<!-- Alignment Holder (Sphere holder) -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheelc:TECWheelNomexC"/>
+		<String name="ChildName" value="tecwheel:TECAlignHolder"/>
+		<Numeric name="N" value="4"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:AlignHolderStartPhi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tecwheeld.xml b/examples/DDCMS/data/tecwheeld.xml
new file mode 100644
index 0000000000000000000000000000000000000000..92219ea48f50d79317a29af9d6ca53b1fdbd71ba
--- /dev/null
+++ b/examples/DDCMS/data/tecwheeld.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tecwheeld.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="FixSuppRmax" value="[tecpetal3:PetalContRmin]+            [tecwheel:FixSuppR]"/>
+		<Constant name="FixSuppW" value="2*[tecwheel:FixSuppA]/([FixSuppRmax]*[FixSuppRmax]-[tecpetal3:PetalContRmin]*[tecpetal3:PetalContRmin])"/>
+		<!-- calculate the width to fit the area at this specific radius! thus the volume will be constant!-->
+		<Constant name="CableL" value="([tecwheel:CableRmax]-[tecring3:Rin])"/>
+		<Constant name="CableR" value="([tecwheel:CableRmax]+[tecring3:Rin])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tecwheeld.xml">
+		<Tubs name="TECWheelD" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:WheelT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelDiskD" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:WheelRmax]" dz="[tecwheel:DiskT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECWheelNomexD" rMin="[tecpetal3:PetalContRmin]" rMax="[tecwheel:NomexRmax]" dz="[tecwheel:NomexT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TECFixSupportD" rMin="[tecpetal3:PetalContRmin]" rMax="[FixSuppRmax]" dz="[tecwheel:FixSuppT]/2" startPhi="-[FixSuppW]/2" deltaPhi="[FixSuppW]"/>
+		<Tubs name="TECOptConnectorD" rMin="[tecwheel:OptConnRmin]" rMax="[tecwheel:OptConnRmax]" dz="[tecwheel:OptConnT3]/2" startPhi="-[tecwheel:OptConnW]/2" deltaPhi="[tecwheel:OptConnW]"/>
+	</SolidSection>
+	<LogicalPartSection label="tecwheeld.xml">
+		<LogicalPart name="TECWheelD" category="unspecified">
+			<rSolid name="tecwheeld:TECWheelD"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelDiskD" category="unspecified">
+			<rSolid name="tecwheeld:TECWheelDiskD"/>
+			<rMaterial name="tecmaterial:TEC_wheel_CF"/>
+		</LogicalPart>
+		<LogicalPart name="TECWheelNomexD" category="unspecified">
+			<rSolid name="tecwheeld:TECWheelNomexD"/>
+			<rMaterial name="tecmaterial:TEC_wheel_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TECFixSupportD" category="unspecified">
+			<rSolid name="tecwheeld:TECFixSupportD"/>
+			<rMaterial name="tecmaterial:TEC_Fixframe"/>
+		</LogicalPart>
+		<LogicalPart name="TECOptConnectorD" category="unspecified">
+			<rSolid name="tecwheeld:TECOptConnectorD"/>
+			<rMaterial name="tecmaterial:TEC_OptoCon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tecwheeld.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tecwheeld:TECWheelD"/>
+			<rChild name="tecwheeld:TECWheelDiskD"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecwheeld:TECWheelDiskD"/>
+			<rChild name="tecwheeld:TECWheelNomexD"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tecwheeld:TECWheelDiskD"/>
+			<rChild name="tecwheel:TECGroundingRing"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelD"/>
+		<String name="ChildName" value="tecpetal8f:TECPetalCont8F"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiF]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, -[tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelD"/>
+		<String name="ChildName" value="tecpetal8b:TECPetalCont8B"/>
+		<Numeric name="N" value="[tecwheel:PetalContN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:PetalContFiB]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, [tecwheel:PetalContZ]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi1]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR1]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="9"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi2]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR2]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi3]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR3]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="25"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi4]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR4]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="33"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi5]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR5]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECWheelInsert"/>
+		<Numeric name="N" value="[tecwheel:InsertN]"/>
+		<Numeric name="StartCopyNo" value="41"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:InsertFi6]"/>
+		<Numeric name="Radius" value="[tecwheel:InsertR6]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheeld:TECFixSupportD"/>
+		<Numeric name="N" value="[tecwheel:FixSuppN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixSuppFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECFixService"/>
+		<Numeric name="N" value="[tecwheel:FixServN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:FixServFi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelD"/>
+		<String name="ChildName" value="tecwheeld:TECOptConnectorD"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="2"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI1]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, -[tecwheel:OptConnZ3]  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelD"/>
+		<String name="ChildName" value="tecwheeld:TECOptConnectorD"/>
+		<Numeric name="N" value="[tecwheel:OptConnN]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="2"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:OptConnFI2]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			0, 0, [tecwheel:OptConnZ3]  </Vector>
+	</Algorithm>
+	<!-- Alignment Holder (Sphere holder) -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tecwheeld:TECWheelNomexD"/>
+		<String name="ChildName" value="tecwheel:TECAlignHolder"/>
+		<Numeric name="N" value="4"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tecwheel:AlignHolderStartPhi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tib.xml b/examples/DDCMS/data/tib.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e085641245d91dc23206e1774c8f98768e107851
--- /dev/null
+++ b/examples/DDCMS/data/tib.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tib.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rin" value="22.20*cm"/>
+		<Constant name="Rout" value="54.00*cm"/>
+		<Constant name="TIBDz" value="716.00*mm"/>
+		<Constant name="SupportT" value="1.50*cm"/>
+		<Constant name="SupportRin" value="[tiblayer3:MFRingOutR]"/>
+		<Constant name="SupportRout" value="[SupportRin]+1.*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tib.xml">
+		<Tubs name="TIB" rMin="[Rin]" rMax="[Rout]" dz="[tib:TIBDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIBOutSupport" rMin="[SupportRin]" rMax="[SupportRout]" dz="[tib:TIBDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+	</SolidSection>
+	<LogicalPartSection label="tib.xml">
+		<LogicalPart name="TIB" category="unspecified">
+			<rSolid name="TIB"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBOutSupport" category="unspecified">
+			<rSolid name="TIBOutSupport"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tib.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tib:TIB"/>
+			<rChild name="tib:TIBOutSupport"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tib:TIB"/>
+			<rChild name="tiblayer0:TIBLayer0"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tib:TIB"/>
+			<rChild name="tiblayer1:TIBLayer1"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tib:TIB"/>
+			<rChild name="tiblayer2:TIBLayer2"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tib:TIB"/>
+			<rChild name="tiblayer3:TIBLayer3"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tiblayer0.xml b/examples/DDCMS/data/tiblayer0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ded81fc735a9a37fb64236bf0b7c1980b414c197
--- /dev/null
+++ b/examples/DDCMS/data/tiblayer0.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tiblayer0.xml" eval="true">
+		<Constant name="RadiusUp" value="([tiblayerpar:RadiusLo0]+                                          [tiblayerpar:DRUpLo])"/>
+		<Constant name="CylinderT" value="0.60*cm"/>
+		<Constant name="CylinderInR" value="253.0*mm"/>
+		<Constant name="MFRingInR" value="225.0*mm"/>
+		<Constant name="MFRingOutR" value="69.0*mm+[MFRingInR]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIBLayerAlgo">
+		<rParent name="tiblayer0:TIBLayer0"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorTilt" value="[tiblayerpar:DetTilt]"/>
+		<Numeric name="LayerL" value="[tibstringpar:StringL]"/>
+		<Numeric name="RadiusLo" value="[tiblayerpar:RadiusLo0]"/>
+		<Numeric name="StringsLo" value="26"/>
+		<String name="StringDetLoName" value="tibstring0:TIBString0Lo1"/>
+		<Numeric name="RadiusUp" value="[tiblayer0:RadiusUp]"/>
+		<Numeric name="StringsUp" value="30"/>
+		<String name="StringDetUpName" value="tibstring0:TIBString0Up1"/>
+		<Numeric name="CylinderThickness" value="[CylinderT]"/>
+		<Numeric name="CylinderInnerRadius" value="[CylinderInR]"/>
+		<String name="CylinderMaterial" value="tibmaterial:TIB_CFCylinder"/>
+		<Numeric name="MFRingInnerRadius" value="[MFRingInR]"/>
+		<Numeric name="MFRingOuterRadius" value="[MFRingOutR]"/>
+		<Numeric name="MFRingThickness" value="[tiblayerpar:MFRingT]"/>
+		<Numeric name="MFRingDeltaz" value="[tiblayerpar:MFRingDz]"/>
+		<String name="MFIntRingMaterial" value="tibmaterial:TIB_MFIntRing"/>
+		<String name="MFExtRingMaterial" value="tibmaterial:TIB_MFExtRing"/>
+		<Numeric name="SupportThickness" value="[tiblayerpar:SupportT]"/>
+		<String name="CentRingMaterial" value="tibmaterial:TIB_CentRing"/>
+		<Vector name="CentRing1" type="numeric" nEntries="4">
+			-6.15*mm, 4.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<Vector name="CentRing2" type="numeric" nEntries="4">
+			36.88*mm, 4.*mm, [MFRingInR], [MFRingInR]+[tiblayerpar:MFRingT]
+		</Vector>
+		<String name="FillerMaterial" value="trackermaterial:T_G10"/>
+		<Numeric name="FillerDeltaz" value="10*mm"/>
+		<String name="RibMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Vector name="RibWidth" type="numeric" nEntries="6">
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2], 
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2] 
+		</Vector>
+		<Vector name="RibPhi" type="numeric" nEntries="6">
+			0*deg, 51.4*deg, 128.6*deg, 180.0*deg, 231.4*deg, 308.6*deg
+		</Vector>
+		<!-- DOHM Position in #string in the upper half shell; negative means place an AUX -->
+		<!-- NB String numbering here starts from 1 -->
+		<Vector name="DOHMListFW" type="numeric" nEntries="6">
+			2, 4, 7, 9, 12, 14
+		</Vector>
+		<Vector name="DOHMListBW" type="numeric" nEntries="6">
+			2, 4, 7, 9, 12, 14
+		</Vector>
+		<Numeric name="DOHMCarrierPhiOffset" value="[tiblayerpar:DOHMCarrierPhiOff]"/>
+		<Numeric name="DOHMtoMFDist" value="[tiblayerpar:DOHMtoMF]"/>
+		<String name="StringDOHMPrimName" value="tiblayerpar:TIBDOHMPrim"/>
+		<String name="StringDOHMAuxName" value="tiblayerpar:TIBDOHMAux"/>
+		<String name="DOHMCarrierMaterial" value="tibmaterial:TIB_DOHMCarrier"/>
+		<String name="DOHMCableMaterial" value="tibmaterial:TIB_DOHM_cable"/>
+		<String name="DOHMPRIMMaterial" value="tibmaterial:TIB_DOHM_PRIM"/>
+		<Numeric name="DOHMPRIMLength" value="[tiblayerpar:DOHM_PRIM_L]"/>
+		<String name="DOHMAUXMaterial" value="tibmaterial:TIB_DOHM_AUX"/>
+		<Numeric name="DOHMAUXLength" value="[tiblayerpar:DOHM_AUX_L]"/>
+		<!-- Pillar Material -->
+		<String name="PillarMaterial" value="tibmaterial:TIB_Pillar"/>
+		<!-- FW Internal Pillar Parameters -->
+		<Numeric name="FWIntPillarDz" value="1.0*mm"/>
+		<Numeric name="FWIntPillarDPhi" value="1.0*deg"/>
+		<Vector name="FWIntPillarPhi" type="numeric" nEntries="1">
+			-1.
+		</Vector>
+		<Vector name="FWIntPillarZ" type="numeric" nEntries="1"> 
+			0.
+		</Vector>
+		<!-- BW Internal Pillar Parameters -->
+		<Numeric name="BWIntPillarDz" value="1.0*cm"/>
+		<Numeric name="BWIntPillarDPhi" value="1.0*deg"/>
+		<Vector name="BWIntPillarPhi" type="numeric" nEntries="1">
+			-1.
+		</Vector>
+		<Vector name="BWIntPillarZ" type="numeric" nEntries="1">
+			0.
+		</Vector>
+		<!-- FW External Pillar Parameters -->
+		<Numeric name="FWExtPillarDz" value="20.5*mm"/>
+		<Numeric name="FWExtPillarDPhi" value="7.0*deg"/>
+		<Vector name="FWExtPillarPhi" type="numeric" nEntries="4">
+			56.*deg, 124.*deg, 236.*deg, 304.*deg 
+		</Vector>
+		<Vector name="FWExtPillarZ" type="numeric" nEntries="4">
+			200.*mm, 200.*mm, 200.*mm, 200.*mm
+		</Vector>
+		<!-- BW External Pillar Parameters -->
+		<Numeric name="BWExtPillarDz" value="8.0*mm"/>
+		<Numeric name="BWExtPillarDPhi" value="7.0*deg"/>
+		<Vector name="BWExtPillarPhi" type="numeric" nEntries="4">
+			56.*deg, 124.*deg, 236.*deg, 304.*deg 
+		</Vector>
+		<Vector name="BWExtPillarZ" type="numeric" nEntries="4">
+			-248.*mm, -248.*mm, -248.*mm, -248.*mm
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tiblayer1.xml b/examples/DDCMS/data/tiblayer1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..19ad1a0f684b5320c64206f7a7ea5222d0fbd35b
--- /dev/null
+++ b/examples/DDCMS/data/tiblayer1.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tiblayer1.xml" eval="true">
+		<Constant name="RadiusUp" value="([tiblayerpar:RadiusLo1]+                                          [tiblayerpar:DRUpLo])"/>
+		<Constant name="CylinderT" value="0.60*cm"/>
+		<Constant name="CylinderInR" value="337.0*mm"/>
+		<Constant name="MFRingInR" value="300.0*mm"/>
+		<Constant name="MFRingOutR" value="75.75*mm+[MFRingInR]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIBLayerAlgo">
+		<rParent name="tiblayer1:TIBLayer1"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorTilt" value="[tiblayerpar:DetTilt]"/>
+		<Numeric name="LayerL" value="[tibstringpar:StringL]"/>
+		<Numeric name="RadiusLo" value="[tiblayerpar:RadiusLo1]"/>
+		<Numeric name="StringsLo" value="34"/>
+		<String name="StringDetLoName" value="tibstring1:TIBString1Lo1"/>
+		<Numeric name="RadiusUp" value="[tiblayer1:RadiusUp]"/>
+		<Numeric name="StringsUp" value="38"/>
+		<String name="StringDetUpName" value="tibstring1:TIBString1Up1"/>
+		<Numeric name="CylinderThickness" value="[CylinderT]"/>
+		<Numeric name="CylinderInnerRadius" value="[CylinderInR]"/>
+		<String name="CylinderMaterial" value="tibmaterial:TIB_CFCylinder"/>
+		<Numeric name="MFRingInnerRadius" value="[MFRingInR]"/>
+		<Numeric name="MFRingOuterRadius" value="[MFRingOutR]"/>
+		<Numeric name="MFRingThickness" value="[tiblayerpar:MFRingT]"/>
+		<Numeric name="MFRingDeltaz" value="[tiblayerpar:MFRingDz]"/>
+		<String name="MFIntRingMaterial" value="tibmaterial:TIB_MFIntRing"/>
+		<String name="MFExtRingMaterial" value="tibmaterial:TIB_MFExtRing"/>
+		<Numeric name="SupportThickness" value="[tiblayerpar:SupportT]"/>
+		<String name="CentRingMaterial" value="tibmaterial:TIB_CentRing"/>
+		<Vector name="CentRing1" type="numeric" nEntries="4">
+			-3.805*mm, 4.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<Vector name="CentRing2" type="numeric" nEntries="4">
+			12.461*mm, 4.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<String name="FillerMaterial" value="trackermaterial:T_G10"/>
+		<Numeric name="FillerDeltaz" value="11*mm"/>
+		<String name="RibMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Vector name="RibWidth" type="numeric" nEntries="6">
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2], 
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2] 
+		</Vector>
+		<Vector name="RibPhi" type="numeric" nEntries="6">
+			0*deg, 56.8*deg, 123.2*deg, 180.0*deg, 236.8*deg, 303.2*deg
+		</Vector>
+		<!-- DOHM Position in #string in the upper half shell; negative means place an AUX -->
+		<!-- NB String numbering here starts from 1 -->
+		<Vector name="DOHMListFW" type="numeric" nEntries="8">
+			2, 4, 7, 9, 12, 14, 16, 18
+		</Vector>
+		<Vector name="DOHMListBW" type="numeric" nEntries="8">
+			2, 4, 7, 9, 11, 13, 16, 18
+		</Vector>
+		<Numeric name="DOHMCarrierPhiOffset" value="[tiblayerpar:DOHMCarrierPhiOff]"/>
+		<Numeric name="DOHMtoMFDist" value="[tiblayerpar:DOHMtoMF]"/>
+		<String name="StringDOHMPrimName" value="tiblayerpar:TIBDOHMPrim"/>
+		<String name="StringDOHMAuxName" value="tiblayerpar:TIBDOHMAux"/>
+		<String name="DOHMCarrierMaterial" value="tibmaterial:TIB_DOHMCarrier"/>
+		<String name="DOHMCableMaterial" value="tibmaterial:TIB_DOHM_cable"/>
+		<String name="DOHMPRIMMaterial" value="tibmaterial:TIB_DOHM_PRIM"/>
+		<Numeric name="DOHMPRIMLength" value="[tiblayerpar:DOHM_PRIM_L]"/>
+		<String name="DOHMAUXMaterial" value="tibmaterial:TIB_DOHM_AUX"/>
+		<Numeric name="DOHMAUXLength" value="[tiblayerpar:DOHM_AUX_L]"/>
+		<!-- Pillar Material -->
+		<String name="PillarMaterial" value="tibmaterial:TIB_Pillar"/>
+		<!-- FW Internal Pillar Parameters -->
+		<Numeric name="FWIntPillarDz" value="21.5*mm"/>
+		<Numeric name="FWIntPillarDPhi" value="6.*deg"/>
+		<Vector name="FWIntPillarPhi" type="numeric" nEntries="4">
+			56.*deg, 124.*deg, 236.*deg, 304.*deg 
+		</Vector>
+		<Vector name="FWIntPillarZ" type="numeric" nEntries="4">
+			173.*mm, 173.*mm, 173.*mm, 173.*mm
+		</Vector>
+		<!-- BW Internal Pillar Parameters -->
+		<Numeric name="BWIntPillarDz" value="13.5*mm"/>
+		<Numeric name="BWIntPillarDPhi" value="6.*deg"/>
+		<Vector name="BWIntPillarPhi" type="numeric" nEntries="4">
+			56.*deg, 124.*deg, 236.*deg, 304.*deg 
+		</Vector>
+		<Vector name="BWIntPillarZ" type="numeric" nEntries="4">
+			-235.5*mm, -235.5*mm, -235.5*mm, -235.5*mm
+		</Vector>
+		<!-- FW External Pillar Parameters -->
+		<Numeric name="FWExtPillarDz" value="17.5*mm"/>
+		<Numeric name="FWExtPillarDPhi" value="7.*deg"/>
+		<Vector name="FWExtPillarPhi" type="numeric" nEntries="4">
+			33.*deg, 147.*deg, 213.*deg, 327.*deg 
+		</Vector>
+		<Vector name="FWExtPillarZ" type="numeric" nEntries="4">
+			250.*mm, 250.*mm, 250.*mm, 250.*mm
+		</Vector>
+		<!-- BW External Pillar Parameters -->
+		<Numeric name="BWExtPillarDz" value="14.5*mm"/>
+		<Numeric name="BWExtPillarDPhi" value="7.*deg"/>
+		<Vector name="BWExtPillarPhi" type="numeric" nEntries="4">
+			33.*deg, 147.*deg, 213.*deg, 327.*deg 
+		</Vector>
+		<Vector name="BWExtPillarZ" type="numeric" nEntries="4">
+			-210.5*mm, -210.5*mm, -210.5*mm, -210.5*mm
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tiblayer2.xml b/examples/DDCMS/data/tiblayer2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..23b2e3545415b5f3239284c7a396f68c6fa8da81
--- /dev/null
+++ b/examples/DDCMS/data/tiblayer2.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tiblayer2.xml" eval="true">
+		<Constant name="RadiusUp" value="([tiblayerpar:RadiusLo2]+                                          [tiblayerpar:DRUpLo])"/>
+		<Constant name="CylinderT" value="0.80*cm"/>
+		<Constant name="CylinderInR" value="415.5*mm"/>
+		<Constant name="MFRingInR" value="382.75*mm"/>
+		<Constant name="MFRingOutR" value="71.5*mm+[MFRingInR]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIBLayerAlgo">
+		<rParent name="tiblayer2:TIBLayer2"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorTilt" value="[tiblayerpar:DetTilt]"/>
+		<Numeric name="LayerL" value="[tibstringpar:StringL]"/>
+		<Numeric name="RadiusLo" value="[tiblayerpar:RadiusLo2]"/>
+		<Numeric name="StringsLo" value="44"/>
+		<String name="StringDetLoName" value="tibstring2:TIBString2Lo1"/>
+		<Numeric name="RadiusUp" value="[tiblayer2:RadiusUp]"/>
+		<Numeric name="StringsUp" value="46"/>
+		<String name="StringDetUpName" value="tibstring2:TIBString2Up1"/>
+		<Numeric name="CylinderThickness" value="[CylinderT]"/>
+		<Numeric name="CylinderInnerRadius" value="[CylinderInR]"/>
+		<String name="CylinderMaterial" value="tibmaterial:TIB_CFCylinder"/>
+		<Numeric name="MFRingInnerRadius" value="[MFRingInR]"/>
+		<Numeric name="MFRingOuterRadius" value="[MFRingOutR]"/>
+		<Numeric name="MFRingThickness" value="[tiblayerpar:MFRingT]"/>
+		<Numeric name="MFRingDeltaz" value="[tiblayerpar:MFRingDz]"/>
+		<String name="MFIntRingMaterial" value="tibmaterial:TIB_MFIntRing"/>
+		<String name="MFExtRingMaterial" value="tibmaterial:TIB_MFExtRing"/>
+		<Numeric name="SupportThickness" value="[tiblayerpar:SupportT]"/>
+		<String name="CentRingMaterial" value="tibmaterial:TIB_CentRing"/>
+		<Vector name="CentRing1" type="numeric" nEntries="4">
+			-15.00*mm, 4.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<Vector name="CentRing2" type="numeric" nEntries="4">
+			-6.00*mm, 4.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<String name="FillerMaterial" value="trackermaterial:T_G10"/>
+		<Numeric name="FillerDeltaz" value="11.5*mm"/>
+		<String name="RibMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Vector name="RibWidth" type="numeric" nEntries="6">
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2], 
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2] 
+		</Vector>
+		<Vector name="RibPhi" type="numeric" nEntries="6">
+			0*deg, 62.6*deg, 117.4*deg, 180.0*deg, 242.6*deg, 297.4*deg
+		</Vector>
+		<!-- DOHM Position in #string in the upper half shell; negative means place an AUX -->
+		<!-- NB String numbering here starts from 1 -->
+		<Vector name="DOHMListFW" type="numeric" nEntries="6">
+			3, -6, 10, -13, 18, -21
+		</Vector>
+		<Vector name="DOHMListBW" type="numeric" nEntries="6">
+			3, -6, 10, -13, 18, -21
+		</Vector>
+		<Numeric name="DOHMtoMFDist" value="[tiblayerpar:DOHMtoMF]"/>
+		<Numeric name="DOHMCarrierPhiOffset" value="[tiblayerpar:DOHMCarrierPhiOff]"/>
+		<String name="StringDOHMPrimName" value="tiblayerpar:TIBDOHMPrim"/>
+		<String name="StringDOHMAuxName" value="tiblayerpar:TIBDOHMAux"/>
+		<String name="DOHMCarrierMaterial" value="tibmaterial:TIB_DOHMCarrier"/>
+		<String name="DOHMCableMaterial" value="tibmaterial:TIB_DOHM_cable"/>
+		<String name="DOHMPRIMMaterial" value="tibmaterial:TIB_DOHM_PRIM"/>
+		<Numeric name="DOHMPRIMLength" value="[tiblayerpar:DOHM_PRIM_L]"/>
+		<String name="DOHMAUXMaterial" value="tibmaterial:TIB_DOHM_AUX"/>
+		<Numeric name="DOHMAUXLength" value="[tiblayerpar:DOHM_AUX_L]"/>
+		<!-- Pillar Material -->
+		<String name="PillarMaterial" value="tibmaterial:TIB_Pillar"/>
+		<!-- FW Internal Pillar Parameters -->
+		<Numeric name="FWIntPillarDz" value="14.*mm"/>
+		<Numeric name="FWIntPillarDPhi" value="7.5*deg"/>
+		<Vector name="FWIntPillarPhi" type="numeric" nEntries="4">
+			34.*deg, 146.*deg, 214.*deg, 326.*deg 
+		</Vector>
+		<Vector name="FWIntPillarZ" type="numeric" nEntries="4">
+			254.*mm, 254.*mm, 254.*mm, 254.*mm
+		</Vector>
+		<!-- BW Internal Pillar Parameters -->
+		<Numeric name="BWIntPillarDz" value="24.*mm"/>
+		<Numeric name="BWIntPillarDPhi" value="7.5*deg"/>
+		<Vector name="BWIntPillarPhi" type="numeric" nEntries="4">
+			34.*deg, 146.*deg, 214.*deg, 326.*deg 
+		</Vector>
+		<Vector name="BWIntPillarZ" type="numeric" nEntries="4">
+			-181.*mm, -181.*mm, -181.*mm, -181.*mm
+		</Vector>
+		<!-- FW External Pillar Parameters -->
+		<Numeric name="FWExtPillarDz" value="14.5*mm"/>
+		<Numeric name="FWExtPillarDPhi" value="4.5*deg"/>
+		<Vector name="FWExtPillarPhi" type="numeric" nEntries="4">
+			52.*deg, 128.*deg, 232.*deg, 308.*deg 
+		</Vector>
+		<Vector name="FWExtPillarZ" type="numeric" nEntries="4">
+			201.*mm, 201.*mm, 201.*mm, 201.*mm
+		</Vector>
+		<!-- BW External Pillar Parameters -->
+		<Numeric name="BWExtPillarDz" value="18.5*mm"/>
+		<Numeric name="BWExtPillarDPhi" value="4.5*deg"/>
+		<Vector name="BWExtPillarPhi" type="numeric" nEntries="4">
+			52.*deg, 128.*deg, 232.*deg, 308.*deg 
+		</Vector>
+		<Vector name="BWExtPillarZ" type="numeric" nEntries="4">
+			-256.5*mm, -256.5*mm, -256.5*mm, -256.5*mm
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tiblayer3.xml b/examples/DDCMS/data/tiblayer3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4dec74dfdf6558a254f575906df85c3f88ccd7a5
--- /dev/null
+++ b/examples/DDCMS/data/tiblayer3.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tiblayer3.xml" eval="true">
+		<Constant name="RadiusUp" value="([tiblayerpar:RadiusLo3]+                                          [tiblayerpar:DRUpLo])"/>
+		<Constant name="CylinderT" value="0.80*cm"/>
+		<Constant name="CylinderInR" value="495.0*mm"/>
+		<Constant name="MFRingInR" value="463.5*mm"/>
+		<Constant name="MFRingOutR" value="72.5*mm+[MFRingInR]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIBLayerAlgo">
+		<rParent name="tiblayer3:TIBLayer3"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorTilt" value="[tiblayerpar:DetTilt]"/>
+		<Numeric name="LayerL" value="[tibstringpar:StringL]"/>
+		<Numeric name="RadiusLo" value="[tiblayerpar:RadiusLo3]"/>
+		<Numeric name="StringsLo" value="52"/>
+		<String name="StringDetLoName" value="tibstring3:TIBString3Lo1"/>
+		<Numeric name="RadiusUp" value="[tiblayer3:RadiusUp]"/>
+		<Numeric name="StringsUp" value="56"/>
+		<String name="StringDetUpName" value="tibstring3:TIBString3Up1"/>
+		<Numeric name="CylinderThickness" value="[CylinderT]"/>
+		<Numeric name="CylinderInnerRadius" value="[CylinderInR]"/>
+		<String name="CylinderMaterial" value="tibmaterial:TIB_CFCylinder"/>
+		<Numeric name="MFRingInnerRadius" value="[MFRingInR]"/>
+		<Numeric name="MFRingOuterRadius" value="[MFRingOutR]"/>
+		<Numeric name="MFRingThickness" value="[tiblayerpar:MFRingT]"/>
+		<Numeric name="MFRingDeltaz" value="[tiblayerpar:MFRingDz]"/>
+		<String name="MFIntRingMaterial" value="tibmaterial:TIB_MFIntRing"/>
+		<String name="MFExtRingMaterial" value="tibmaterial:TIB_MFExtRing"/>
+		<Numeric name="SupportThickness" value="[tiblayerpar:SupportT]"/>
+		<String name="CentRingMaterial" value="tibmaterial:TIB_CentRing"/>
+		<Vector name="CentRing1" type="numeric" nEntries="4">
+			-0.70*mm, 8.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<Vector name="CentRing2" type="numeric" nEntries="4">
+			12.20*mm, 8.*mm, [MFRingOutR]-[tiblayerpar:MFRingT], [MFRingOutR]
+		</Vector>
+		<String name="FillerMaterial" value="trackermaterial:T_G10"/>
+		<Numeric name="FillerDeltaz" value="9.75*mm"/>
+		<String name="RibMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Vector name="RibWidth" type="numeric" nEntries="6">
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2], 
+			[tiblayerpar:RibWidth1], [tiblayerpar:RibWidth2], [tiblayerpar:RibWidth2] 
+		</Vector>
+		<Vector name="RibPhi" type="numeric" nEntries="6">
+			0*deg, 53.3*deg, 126.7*deg, 180.0*deg, 233.3*deg, 306.7*deg
+		</Vector>
+		<!-- DOHM Position in #string in the upper half shell; negative means place an AUX -->
+		<!-- NB String numbering here starts from 1 -->
+		<Vector name="DOHMListFW" type="numeric" nEntries="8">
+			3, -6, 10, -13, 16, -19, 24, -27
+		</Vector>
+		<Vector name="DOHMListBW" type="numeric" nEntries="8">
+			3, -6, 9, -12, 16, -19, 23, -26
+		</Vector>
+		<Numeric name="DOHMtoMFDist" value="[tiblayerpar:DOHMtoMF]"/>
+		<Numeric name="DOHMCarrierPhiOffset" value="[tiblayerpar:DOHMCarrierPhiOff]"/>
+		<String name="StringDOHMPrimName" value="tiblayerpar:TIBDOHMPrim"/>
+		<String name="StringDOHMAuxName" value="tiblayerpar:TIBDOHMAux"/>
+		<String name="DOHMCarrierMaterial" value="tibmaterial:TIB_DOHMCarrier"/>
+		<String name="DOHMCableMaterial" value="tibmaterial:TIB_DOHM_cable"/>
+		<String name="DOHMPRIMMaterial" value="tibmaterial:TIB_DOHM_PRIM"/>
+		<Numeric name="DOHMPRIMLength" value="[tiblayerpar:DOHM_PRIM_L]"/>
+		<String name="DOHMAUXMaterial" value="tibmaterial:TIB_DOHM_AUX"/>
+		<Numeric name="DOHMAUXLength" value="[tiblayerpar:DOHM_AUX_L]"/>
+		<!-- Pillar Material -->
+		<String name="PillarMaterial" value="tibmaterial:TIB_Pillar"/>
+		<!-- FW Internal Pillar Parameters -->
+		<Numeric name="FWIntPillarDz" value="23.5*mm"/>
+		<Numeric name="FWIntPillarDPhi" value="5.5*deg"/>
+		<Vector name="FWIntPillarPhi" type="numeric" nEntries="4">
+			52.*deg, 128.*deg, 232.*deg, 308.*deg 
+		</Vector>
+		<Vector name="FWIntPillarZ" type="numeric" nEntries="4">
+			182.*mm, 182.*mm, 182.*mm, 182.*mm
+		</Vector>
+		<!-- BW Internal Pillar Parameters -->
+		<Numeric name="BWIntPillarDz" value="16.0*mm"/>
+		<Numeric name="BWIntPillarDPhi" value="5.5*deg"/>
+		<Vector name="BWIntPillarPhi" type="numeric" nEntries="4">
+			52.*deg, 128.*deg, 232.*deg, 308.*deg 
+		</Vector>
+		<Vector name="BWIntPillarZ" type="numeric" nEntries="4">
+			-259.*mm, -259.*mm, -259.*mm, -259.*mm
+		</Vector>
+		<!-- FW External Pillar Parameters -->
+		<Numeric name="FWExtPillarDz" value="1.*cm"/>
+		<Numeric name="FWExtPillarDPhi" value="1.*deg"/>
+		<Vector name="FWExtPillarPhi" type="numeric" nEntries="1">
+			-1.
+		</Vector>
+		<Vector name="FWExtPillarZ" type="numeric" nEntries="1">
+			-1.
+		</Vector>
+		<!-- BW External Pillar Parameters -->
+		<Numeric name="BWExtPillarDz" value="1.*cm"/>
+		<Numeric name="BWExtPillarDPhi" value="1.*deg"/>
+		<Vector name="BWExtPillarPhi" type="numeric" nEntries="1">
+			-1.
+		</Vector>
+		<Vector name="BWExtPillarZ" type="numeric" nEntries="1">
+			-1.
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tiblayerpar.xml b/examples/DDCMS/data/tiblayerpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec0a3de58aad1c62827fbbc1200f4129cbe0fa70
--- /dev/null
+++ b/examples/DDCMS/data/tiblayerpar.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tiblayerpar.xml" eval="true">
+		<Constant name="DetTilt" value="-9.00*deg"/>
+		<Constant name="Tolerance" value="0.25*cm"/>
+		<Constant name="SupportT" value="0.5*mm"/>
+		<Constant name="RibWidth1" value="3.50*cm"/>
+		<Constant name="RibWidth2" value="0.13*cm"/>
+		<Constant name="RadiusLo0" value="23.90*cm"/>
+		<Constant name="RadiusLo1" value="32.30*cm"/>
+		<Constant name="RadiusLo2" value="40.25*cm"/>
+		<Constant name="RadiusLo3" value="48.20*cm"/>
+		<Constant name="DRUpLo" value="3.20*cm"/>
+		<Constant name="MFRingT" value="8.0*mm"/>
+		<Constant name="MFRingDz" value="17.0*mm"/>
+		<Constant name="DOHMCarrierW" value="29.5*cm"/>
+		<Constant name="DOHMCarrierT" value="1.15*mm"/>
+		<Constant name="DOHMCarrierPhiOff" value="2.*deg"/>
+		<Constant name="DOHMtoMF" value="1.00*cm"/>
+		<Constant name="DOHM_PRIM_W" value="6.0*cm"/>
+		<Constant name="DOHM_PRIM_L" value="28.5*cm"/>
+		<Constant name="DOHM_PRIM_T" value="4.0*mm"/>
+		<Constant name="DOHM_AUX_W" value="6.0*cm"/>
+		<Constant name="DOHM_AUX_L" value="15.5*cm"/>
+		<Constant name="DOHM_AUX_T" value="4.0*mm"/>
+		<Constant name="Tol" value="0.1*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tiblayerpar.xml">
+		<Box name="TIBDOHMPrim" dx="0.5*[tiblayerpar:DOHM_PRIM_W]" dy="0.5*[tiblayerpar:DOHM_PRIM_T]" dz="0.5*[tiblayerpar:DOHM_PRIM_L]"/>
+		<Box name="TIBDOHMAux" dx="0.5*[tiblayerpar:DOHM_AUX_W]" dy="0.5*[tiblayerpar:DOHM_AUX_T]" dz="0.5*[tiblayerpar:DOHM_AUX_L]"/>
+	</SolidSection>
+	<LogicalPartSection label="tiblayerpar.xml">
+		<LogicalPart name="TIBDOHMPrim" category="unspecified">
+			<rSolid name="tiblayerpar:TIBDOHMPrim"/>
+			<rMaterial name="tibmaterial:TIB_DOHM"/>
+		</LogicalPart>
+		<LogicalPart name="TIBDOHMAux" category="unspecified">
+			<rSolid name="tiblayerpar:TIBDOHMAux"/>
+			<rMaterial name="tibmaterial:TIB_AUX"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<RotationSection label="tiblayerpar.xml">
+		<Rotation name="D180" thetaX="90*deg" phiX="0*deg" thetaY="90*deg" phiY="270*deg" thetaZ="180*deg" phiZ="0*deg"/>
+	</RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibmaterial.xml b/examples/DDCMS/data/tibmaterial.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbb90689add16e2963ac409be1220c776f3b8c63
--- /dev/null
+++ b/examples/DDCMS/data/tibmaterial.xml
@@ -0,0 +1,443 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <MaterialSection label="tibmaterial.xml">
+    <CompositeMaterial name="TIB_DOHM" density="1.61191*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.37005">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08736">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00142">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00354">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00254">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00254">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03447">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03446">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0136">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01693">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00542">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00325">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00726">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00453">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05037">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02052">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01489">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00352">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02114">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01107">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04416">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_CCUM" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05524">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_DOH" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02721">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00847">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00559">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02665">
+        <rMaterial name="tibtidcommonmaterial:T_MedusaWire" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01497">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10884">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_AUX" density="1.69155*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.34905">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08045">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00272">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00517">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00127">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00127">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06357">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06356">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11042">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04498">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01786">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00412">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02536">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01328">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02622">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1907">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_DOHMCarrier" density="0.37823*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52099">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07514">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08092">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02081">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26238">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_AmphCable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03006">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0097">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_Flange" density="0.541944*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.71068">
+        <rMaterial name="tibtidcommonmaterial:T_MedusaWire" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10194">
+        <rMaterial name="tibtidcommonmaterial:T_Al6mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08266">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04022">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_AmphCable" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02347">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01743">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0236">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_CFCylinder" density="1.74797*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.96684">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01343">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00714">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01259">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_ModKaptonBox" density="1.43380*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.39057">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00612">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00931">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14667">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.36669">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03667">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04398">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_SSAOHBox" density="0.99230*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.73275">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_AOH" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05655">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03887">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06715">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03882">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_HybridTails" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01559">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_HybridTails" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02375">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00532">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0212">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_DSAOHBox" density="1.19076*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1">
+        <rMaterial name="tibmaterial:TIB_SSAOHBox" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_ModHybLedge" density="5.85144*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.88449">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11551">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_ModDummyLedge" density="5.51982*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.8706">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1294">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_AOHLedge" density="5.57478*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_CoolPipe" density="2.00806*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50397">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.49603">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_MCable" density="2.25395*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.38359">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.44832">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07394">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09415">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_SSMCModConn" density="1.23046*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.03675">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_HybridTails" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01862">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00418">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12499">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01191">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16248">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.37555">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24997">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01556">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_DSMCModConn" density="1.67201*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1">
+        <rMaterial name="tibmaterial:TIB_SSMCModConn" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_MCHead" density="2.01518*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.34318">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_CCUM" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10297">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12034">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01985">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02114">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05639">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03524">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03524">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04229">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0141">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03524">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02819">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02819">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06344">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02584">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02834">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_MFIntRing" density="1.66403*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.34788">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08064">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02664">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.36336">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07841">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01023">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08908">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00375">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_MFExtRing" density="1.68430*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.98796">
+        <rMaterial name="tibmaterial:TIB_MFIntRing" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01204">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_AmphCable" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_CentRing" density="3.42188*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.92603">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07397">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_Spacer" density="2.88571*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.87129">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12871">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_Pillar" density="1.7394*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.75785">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24215">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+  </MaterialSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibmodpar.xml b/examples/DDCMS/data/tibmodpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a8a5a6093682375c36434f7da06f78c643e0ec86
--- /dev/null
+++ b/examples/DDCMS/data/tibmodpar.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibmodpar.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ModuleDx" value="3.900*cm"/>
+		<Constant name="SSModuleDy" value="1.100*mm"/>
+		<Constant name="DSModuleDy" value="2.475*mm"/>
+		<Constant name="DSModuleSideCutDx" value="3.3*mm"/>
+		<Constant name="DSModuleSideCutDy" value="0.8*mm"/>
+		<Constant name="DSModuleSideCutX" value="36.*mm"/>
+		<Constant name="DSModuleSideCutY" value="1.775*mm"/>
+		<Constant name="SideCutExtraZ" value="0.1*mm"/>
+		<Constant name="ModuleDz" value="81.65*mm"/>
+		<Constant name="HybridDx" value="23.50*mm"/>
+		<Constant name="HybridDy" value="0.565*mm"/>
+		<Constant name="HybridDz" value="12.65*mm"/>
+		<Constant name="HybridZ" value="[ModuleDz]-[HybridDz]"/>
+		<Constant name="PARPhiDx" value="32.00*mm"/>
+		<Constant name="PADy" value="0.565*mm"/>
+		<Constant name="PARPhiDz" value="4.500*mm"/>
+		<Constant name="PAZ" value="[ModuleDz]-2*[HybridDz]-[PARPhiDz]"/>
+		<Constant name="CFFrameHybDz" value="12.40*mm"/>
+		<Constant name="CFFrameHybZ" value="-[tibmodpar:ModuleDz]+[tibmodpar:CFFrameHybDz]"/>
+		<Constant name="CFFrameHybRPhiDx" value="30.00*mm"/>
+		<Constant name="CFFrameDy" value="0.250*mm"/>
+		<Constant name="CFFrameDz" value="[ModuleDz]-[CFFrameHybDz]"/>
+		<Constant name="CFFrameZ" value="[ModuleDz]-[CFFrameDz]"/>
+		<Constant name="CFFrameHoleDx" value="30.00*mm"/>
+		<Constant name="CFFrameHoleDz" value="59.50*mm"/>
+		<Constant name="CFFrameHoleOffset" value="1.000*mm"/>
+		<Constant name="CFFrameHoleZ" value="[tibmodpar:WaferZ]-[tibmodpar:CFFrameHybDz]"/>
+		<Constant name="KaptonBoxDy" value="0.150*mm"/>
+		<Constant name="KaptonBoxDz" value="[ModuleDz]-[HybridDz]-[PARPhiDz]"/>
+		<Constant name="KaptonBoxZ" value="[tibmodpar:HybridDz]+[tibmodpar:PARPhiDz]"/>
+		<Constant name="KaptonBoxHoleDx" value="27.50*mm"/>
+		<Constant name="KaptonBoxHoleDz" value="57.50*mm"/>
+		<Constant name="KaptonBoxHoleZ" value="[tibmodpar:KaptonBoxHoleDz]-[tibmodpar:KaptonBoxDz]"/>
+		<Constant name="StereoAngle" value="5.729578*deg"/>
+		<Constant name="TrapSterTheta" value="atan(0.5*tan([tibmodpar:StereoAngle]))"/>
+		<!-- Trapezoid parameter -->
+		<Constant name="HybLedgeDz" value="3.60*mm"/>
+		<Constant name="HybLedgeSideDx" value="3.0*mm"/>
+		<Constant name="HybLedgeSideDz" value="12.0*mm"/>
+		<Constant name="DummyLedgeDz" value="5.0*mm"/>
+		<Constant name="LedgeBoxDx" value="[tibstringpar:CoolBoxDx]"/>
+		<Constant name="LedgeBoxDy" value="[tibstringpar:CoolBoxDy]-[tibstringpar:CoolPipeDy]"/>
+		<Constant name="SSLedgeBoxY" value="-[tibmodpar:SSModuleDy]-[tibmodpar:LedgeBoxDy]"/>
+		<Constant name="DSLedgeBoxY" value="-[tibmodpar:DSModuleDy]-[tibmodpar:LedgeBoxDy]"/>
+		<Constant name="AOHLedgeDz" value="1.5*mm"/>
+		<Constant name="AOHLedgeSideDx" value="1.5*mm"/>
+		<Constant name="AOHLedgeSideDz" value="15.0*mm"/>
+		<Constant name="AOHModOffset" value="6.0*mm"/>
+		<Constant name="AOHLedgeModOffset" value="[tibmodpar:AOHModOffset]+[tibmodpar:AOHLedgeSideDz]"/>
+		<Constant name="SSAOHBoxDx" value="18.0*mm"/>
+		<Constant name="DSAOHBoxDx" value="[tibstringpar:CoolBoxDx]"/>
+		<Constant name="AOHBoxDy" value="[tibmodpar:SSModuleDy]"/>
+		<Constant name="AOHToMod" value="6.0*mm"/>
+		<Constant name="AOHBoxDz" value="[tibmodpar:AOHLedgeSideDz]+0.5*[tibmodpar:AOHToMod]"/>
+		<Constant name="SSAOHBoxY" value="-[tibmodpar:SSModuleDy]+[tibmodpar:AOHBoxDy]"/>
+		<Constant name="SSAOHBoxX" value="[tibmodpar:LedgeBoxDx]-[tibmodpar:SSAOHBoxDx]"/>
+		<Constant name="DSAOHBoxY" value="-[tibmodpar:DSModuleDy]+[tibmodpar:AOHBoxDy]"/>
+		<Constant name="ModCool1Dx" value="2.350*cm"/>
+		<Constant name="ModCoolDy" value="0.015*cm"/>
+		<Constant name="ModCool1Dz" value="0.350*cm"/>
+		<Constant name="ModCool1X" value="0.000*cm"/>
+		<Constant name="ModCool1Z" value="7.800*cm"/>
+		<Constant name="ModCool2Dx" value="0.300*cm"/>
+		<Constant name="ModCool2Dz" value="1.250*cm"/>
+		<Constant name="ModCool2X" value="2.650*cm"/>
+		<Constant name="ModCool2Z" value="6.900*cm"/>
+		<Constant name="SSWaferDx" value="31.6440*mm"/>
+		<Constant name="DSWaferDx" value="31.6640*mm"/>
+		<Constant name="WaferDy" value="59.4805*mm"/>
+		<Constant name="WaferDz" value="0.160*mm"/>
+		<Constant name="ActiveDz" value="[WaferDz]-[tracker:BackPlaneDz]"/>
+		<Constant name="SSActiveDx" value="30.720*mm"/>
+		<!-- Actual ActiveDx=30.750mm; 30.720=pitch(=120micron)*512 -->
+		<Constant name="DSActiveDx" value="30.720*mm"/>
+		<!-- Actual ActiveDx=30.770mm; 30.720=pitch(=80micron)*768 -->
+		<Constant name="ActiveDy" value="58.4425*mm"/>
+		<Constant name="WaferZ" value="12.33*mm"/>
+		<Constant name="Tol" value="0.01*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tibmodpar.xml">
+		<Box name="TIBSSModule" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[tibmodpar:ModuleDz]"/>
+		<Box name="TIBDSModuleMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[tibmodpar:ModuleDz]"/>
+		<Box name="TIBDSModuleSideCutL" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[tibmodpar:ModuleDz]+[tibmodpar:SideCutExtraZ]"/>
+		<Box name="TIBDSModuleSideCutR" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[tibmodpar:ModuleDz]+[tibmodpar:SideCutExtraZ]"/>
+		<SubtractionSolid name="TIBDSModuleLeftCutted">
+			<rSolid name="TIBDSModuleMainPart"/>
+			<rSolid name="TIBDSModuleSideCutL"/>
+			<Translation x="-[DSModuleSideCutX]" y="[DSModuleSideCutY]" z="0."/>
+		</SubtractionSolid>
+		<SubtractionSolid name="TIBDSModule">
+			<rSolid name="TIBDSModuleLeftCutted"/>
+			<rSolid name="TIBDSModuleSideCutR"/>
+			<Translation x="[DSModuleSideCutX]" y="[DSModuleSideCutY]" z="0."/>
+		</SubtractionSolid>
+		<Box name="TIBHybrid" dx="[tibmodpar:HybridDx]" dy="[tibmodpar:HybridDy]" dz="[tibmodpar:HybridDz]"/>
+		<Box name="TIBPA1" dx="[PARPhiDx]" dy="[PADy]" dz="[PARPhiDz]"/>
+		<Box name="TIBSSWafer" dx="[tibmodpar:SSWaferDx]" dy="[tibmodpar:WaferDy]" dz="[tibmodpar:WaferDz]"/>
+		<Box name="TIBSSActive" dx="[tibmodpar:SSActiveDx]" dy="[tibmodpar:ActiveDy]" dz="[tibmodpar:ActiveDz]"/>
+		<Box name="TIBDSWafer" dx="[tibmodpar:DSWaferDx]" dy="[tibmodpar:WaferDy]" dz="[tibmodpar:WaferDz]"/>
+		<Box name="TIBDSActive" dx="[tibmodpar:DSActiveDx]" dy="[tibmodpar:ActiveDy]" dz="[tibmodpar:ActiveDz]"/>
+		<Box name="TIBModCFFrame" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:CFFrameDy]" dz="[tibmodpar:CFFrameDz]"/>
+		<Box name="TIBModCFFrameHole" dx="[tibmodpar:CFFrameHoleDx]" dy="[tibmodpar:CFFrameDy]" dz="[tibmodpar:CFFrameHoleDz]"/>
+		<Box name="TIBModCFFrameHybRPhi" dx="[tibmodpar:CFFrameHybRPhiDx]" dy="[tibmodpar:CFFrameDy]" dz="[tibmodpar:CFFrameHybDz]"/>
+		<Box name="TIBModKaptonBoxRPhi" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:KaptonBoxDy]" dz="[tibmodpar:KaptonBoxDz]"/>
+		<Box name="TIBModKaptonBoxHole" dx="[tibmodpar:KaptonBoxHoleDx]" dy="[tibmodpar:KaptonBoxDy]" dz="[tibmodpar:KaptonBoxHoleDz]"/>
+		<!-- Module Ledges definitions -->
+		<Box name="TIBModLedgeBox" dx="[tibmodpar:LedgeBoxDx]" dy="[tibmodpar:LedgeBoxDy]" dz="[tibmodpar:ModuleDz]"/>
+		<Box name="TIBModHybLedgeNoCut" dx="[tibmodpar:LedgeBoxDx]" dy="[tibmodpar:LedgeBoxDy]" dz="[tibmodpar:HybLedgeSideDz]"/>
+		<Box name="TIBModHybLedgeCut" dx="[tibmodpar:LedgeBoxDx]-2*[tibmodpar:HybLedgeSideDx]" dy="[tibmodpar:LedgeBoxDy]" dz="[tibmodpar:HybLedgeSideDz]-[tibmodpar:HybLedgeDz]"/>
+		<SubtractionSolid name="TIBModHybLedge">
+			<rSolid name="TIBModHybLedgeNoCut"/>
+			<rSolid name="TIBModHybLedgeCut"/>
+			<Translation x="[zero]" y="[zero]" z="[tibmodpar:HybLedgeDz]"/>
+		</SubtractionSolid>
+		<Box name="TIBModDummyLedge" dx="[tibmodpar:LedgeBoxDx]" dy="[tibmodpar:LedgeBoxDy]" dz="[tibmodpar:DummyLedgeDz]"/>
+		<!-- AOH Ledges definitions -->
+		<Box name="TIBAOHLedgeNoCut" dx="[tibmodpar:LedgeBoxDx]" dy="[tibmodpar:LedgeBoxDy]" dz="[tibmodpar:AOHLedgeSideDz]"/>
+		<Box name="TIBAOHLedgeCut" dx="[tibmodpar:LedgeBoxDx]-2*[tibmodpar:AOHLedgeSideDx]" dy="[tibmodpar:LedgeBoxDy]" dz="[tibmodpar:AOHLedgeSideDz]-[tibmodpar:AOHLedgeDz]"/>
+		<SubtractionSolid name="TIBAOHLedge">
+			<rSolid name="TIBAOHLedgeNoCut"/>
+			<rSolid name="TIBAOHLedgeCut"/>
+			<Translation x="[zero]" y="[zero]" z="[tibmodpar:AOHLedgeDz]"/>
+		</SubtractionSolid>
+		<!-- AOH Boxes definitions -->
+		<Box name="TIBSSAOHBox" dx="[tibmodpar:SSAOHBoxDx]" dy="[tibmodpar:AOHBoxDy]" dz="[tibmodpar:AOHBoxDz]"/>
+		<Box name="TIBDSAOHBox" dx="[tibmodpar:DSAOHBoxDx]" dy="[tibmodpar:AOHBoxDy]" dz="[tibmodpar:AOHBoxDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tibmodpar.xml">
+		<LogicalPart name="TIBModCFFrameRPhi" category="unspecified">
+			<rSolid name="tibmodpar:TIBModCFFrame"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModCFFrameHybRPhi" category="unspecified">
+			<rSolid name="tibmodpar:TIBModCFFrameHybRPhi"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModCFFrameHole" category="unspecified">
+			<rSolid name="tibmodpar:TIBModCFFrameHole"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModKaptonBoxRPhi" category="unspecified">
+			<rSolid name="tibmodpar:TIBModKaptonBoxRPhi"/>
+			<rMaterial name="tibmaterial:TIB_ModKaptonBox"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModKaptonBoxHole" category="unspecified">
+			<rSolid name="tibmodpar:TIBModKaptonBoxHole"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBPA1" category="unspecified">
+			<rSolid name="TIBPA1"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_PA"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModLedgeBox" category="unspecified">
+			<rSolid name="TIBModLedgeBox"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModHybLedge" category="unspecified">
+			<rSolid name="TIBModHybLedge"/>
+			<rMaterial name="tibmaterial:TIB_ModHybLedge"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModDummyLedge" category="unspecified">
+			<rSolid name="TIBModDummyLedge"/>
+			<rMaterial name="tibmaterial:TIB_ModDummyLedge"/>
+		</LogicalPart>
+		<LogicalPart name="TIBAOHLedge" category="unspecified">
+			<rSolid name="TIBAOHLedge"/>
+			<rMaterial name="tibmaterial:TIB_AOHLedge"/>
+		</LogicalPart>
+		<LogicalPart name="TIBSSAOHBox" category="unspecified">
+			<rSolid name="TIBSSAOHBox"/>
+			<rMaterial name="tibmaterial:TIB_SSAOHBox"/>
+		</LogicalPart>
+		<LogicalPart name="TIBDSAOHBox" category="unspecified">
+			<rSolid name="TIBDSAOHBox"/>
+			<rMaterial name="tibmaterial:TIB_DSAOHBox"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<RotationSection label="tibmodpar.xml">
+		<Rotation name="Rphi" thetaX="90*deg" phiX="180*deg" thetaY="0*deg" phiY="90*deg" thetaZ="90*deg" phiZ="90*deg"/>
+		<Rotation name="SterB" thetaX="95.7296*deg" phiX="0*deg" thetaY="5.7296*deg" phiY="0*deg" thetaZ="90*deg" phiZ="270*deg"/>
+		<Rotation name="SterA" thetaX="84.2704*deg" phiX="0*deg" thetaY="-5.7296*deg" phiY="0*deg" thetaZ="90*deg" phiZ="270*deg"/>
+		<Rotation name="CFFrameSterB" thetaX="90.*deg" phiX="180.*deg" thetaY="90.*deg" phiY="270.*deg" thetaZ="0.*deg" phiZ="0.*deg"/>
+		<Rotation name="CFFrameHoleSterA" thetaX="90.*deg-[StereoAngle]" phiX="0.*deg" thetaY="90.*deg" phiY="90.*deg" thetaZ="[StereoAngle]" phiZ="180.*deg"/>
+		<Rotation name="KaptonBoxHoleSterB" thetaX="84.2704*deg" phiX="0*deg" thetaY="-5.7296*deg" phiY="0*deg" thetaZ="90*deg" phiZ="270*deg"/>
+		<Rotation name="KaptonBoxHoleSterA" thetaX="[StereoAngle]" phiX="180.*deg" thetaY="90.*deg" phiY="90.*deg" thetaZ="90.*deg+[StereoAngle]" phiZ="180.*deg"/>
+		<Rotation name="PAB" thetaX="180*deg" phiX="0*deg" thetaY="90*deg" phiY="270*deg" thetaZ="90*deg" phiZ="180*deg"/>
+		<Rotation name="PAA" thetaX="180*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="90*deg" phiZ="0*deg"/>
+	</RotationSection>
+	<PosPartSection label="tibmodpar.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibmodpar:TIBModCFFrameRPhi"/>
+			<rChild name="tibmodpar:TIBModCFFrameHole"/>
+			<Translation x="[zero]" y="[zero]" z="[tibmodpar:CFFrameHoleZ]-[tibmodpar:CFFrameHoleOffset]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodpar:TIBModKaptonBoxRPhi"/>
+			<rChild name="tibmodpar:TIBModKaptonBoxHole"/>
+			<Translation x="[zero]" y="[zero]" z="[tibmodpar:KaptonBoxHoleZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodpar:TIBModLedgeBox"/>
+			<rChild name="tibmodpar:TIBModHybLedge"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibmodpar:ModuleDz]+[tibmodpar:HybLedgeSideDz]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodpar:TIBModLedgeBox"/>
+			<rChild name="tibmodpar:TIBModDummyLedge"/>
+			<Translation x="[zero]" y="[zero]" z="[tibmodpar:ModuleDz]-[tibmodpar:DummyLedgeDz]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibmodule0.xml b/examples/DDCMS/data/tibmodule0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c0c90dd6d406b3a29899e2f3032d1b7e90f7c011
--- /dev/null
+++ b/examples/DDCMS/data/tibmodule0.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibmodule0.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="ShiftX" value="5.948*mm"/>
+		<Constant name="SpacerDy" value="0.175*mm"/>
+		<Constant name="SpacerY" value="[zero]"/>
+		<Constant name="CFFrameRPhiY" value="[SpacerY]+[SpacerDy]+[tibmodpar:CFFrameDy]"/>
+		<Constant name="CFFrameSterY" value="[SpacerY]-[SpacerDy]-[tibmodpar:CFFrameDy]"/>
+		<Constant name="CFFrameHybSterDx" value="[tibmodpar:HybridDx]"/>
+		<Constant name="KaptonBoxRPhiY" value="[CFFrameRPhiY]+[tibmodpar:CFFrameDy]+[tibmodpar:KaptonBoxDy]"/>
+		<Constant name="KaptonBoxSterOffset" value="1.*mm"/>
+		<Constant name="KaptonBoxSterDz" value="([tibmodpar:WaferDy]+0.5*[tibmodule0:KaptonBoxSterOffset])/cos([tibmodpar:StereoAngle])"/>
+		<Constant name="KaptonBoxSterY" value="[CFFrameSterY]-[tibmodpar:CFFrameDy]-[tibmodpar:KaptonBoxDy]"/>
+		<Constant name="KaptonBoxHoleSterX" value="cos([tibmodpar:StereoAngle])*(cos([tibmodpar:StereoAngle])*([tibmodule0:KaptonBoxSterDz])-[tibmodpar:KaptonBoxHoleDz])"/>
+		<Constant name="KaptonBoxHoleSterZ" value="sin([tibmodpar:StereoAngle])*(cos([tibmodpar:StereoAngle])*([tibmodule0:KaptonBoxSterDz])-[tibmodpar:KaptonBoxHoleDz])"/>
+		<Constant name="HybridRPhiY" value="[CFFrameRPhiY]+[tibmodpar:CFFrameDy]+[tibmodpar:HybridDy]"/>
+		<Constant name="HybridSterY" value="[CFFrameSterY]-[tibmodpar:CFFrameDy]-[tibmodpar:HybridDy]"/>
+		<Constant name="PASterDx" value="0.5*63.680*mm"/>
+		<Constant name="PASterDz1" value="0.5*6.103*mm"/>
+		<Constant name="PASterDz2" value="[tibmodule0:PASterDz1]+[tibmodule0:PASterDx]*tan([tibmodpar:StereoAngle])"/>
+		<Constant name="PARPhiY" value="[tibmodule0:SpacerDy]+2*[tibmodpar:CFFrameDy]+[tibmodpar:PADy]"/>
+		<Constant name="PASterY" value="-[tibmodule0:SpacerDy]-2*[tibmodpar:CFFrameDy]-[tibmodpar:PADy]"/>
+		<Constant name="PASterX" value="5.927*mm"/>
+		<Constant name="PASterZ" value="[tibmodpar:ModuleDz]-2*[tibmodpar:HybridDz]-0.5*([tibmodule0:PASterDz1]+[tibmodule0:PASterDz2])"/>
+		<Constant name="LedgeSterDx" value="0.5*59.993*mm"/>
+		<Constant name="LedgeSterDy" value="0.5*([tibmodpar:DSModuleDy]-[tibmodule0:SpacerDy]-2.*[tibmodpar:CFFrameDy])"/>
+		<Constant name="LedgeSterDz1" value="[tibmodule0:LedgeSterDz2]+[tibmodule0:LedgeSterDx]*tan([tibmodpar:StereoAngle])"/>
+		<Constant name="LedgeSterDz2" value="1.600*mm"/>
+		<!-- Should be 2.200*mm, used 1.6*mm for weigth matching -->
+		<Constant name="LedgeSterY" value="-[tibmodpar:DSModuleDy]+[tibmodule0:LedgeSterDy]"/>
+		<Constant name="LedgeSterZ" value="[tibmodpar:ModuleDz]-0.5*[tibmodule0:LedgeSterDz1]-0.5*[tibmodule0:LedgeSterDz2]"/>
+		<Constant name="LedgeSideDx" value="0.5*([tibmodule0:SpacerHybDx]-[tibmodpar:HybridDx])"/>
+		<Constant name="LedgeSideDy" value="0.5*([tibmodpar:DSModuleDy]-[tibmodule0:SpacerDy])"/>
+		<Constant name="LedgeSideDz" value="12.00*mm"/>
+		<Constant name="LedgeSideX" value="[tibmodule0:SpacerHybDx]-[tibmodule0:LedgeSideDx]"/>
+		<Constant name="LedgeSideY" value="-[tibmodpar:DSModuleDy]+[tibmodule0:LedgeSideDy]"/>
+		<Constant name="LedgeSideZ" value="-[tibmodpar:ModuleDz]+[tibmodule0:LedgeSideDz]"/>
+		<Constant name="SpacerHybDx" value="[tibmodpar:CFFrameHybRPhiDx]"/>
+		<Constant name="SpacerHybDz" value="14.4*mm"/>
+		<Constant name="SpacerSideDx" value="4.00*mm"/>
+		<Constant name="SpacerSideDz" value="12.1*mm"/>
+		<Constant name="SpacerSideX" value="[SpacerHybDx]+[SpacerSideDx]"/>
+		<Constant name="SpacerSideZ" value="[tibmodpar:ModuleDz]-[SpacerSideDz]-25.8*mm"/>
+		<Constant name="SpacerLedgeDx" value="24.0*mm"/>
+		<Constant name="SpacerLedgeDz" value="4.00*mm"/>
+		<Constant name="SpacerLedgeZ" value="[tibmodpar:ModuleDz]-[SpacerLedgeDz]"/>
+		<Constant name="SpacerHybZ" value="[tibmodpar:ModuleDz]-[SpacerHybDz]"/>
+		<Constant name="ModCoolY" value="-0.1945*cm"/>
+		<Constant name="WaferRPhiY" value="1.135*mm"/>
+		<Constant name="WaferSterY" value="-1.135*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tibmodule0.xml">
+		<Box name="TIBModCFFrameHybSter" dx="[tibmodule0:CFFrameHybSterDx]" dy="[tibmodpar:CFFrameDy]" dz="[tibmodpar:CFFrameHybDz]"/>
+		<Trapezoid name="TIBModKaptonBoxSter" dz="[tibmodpar:ModuleDx]" alp1="0*deg" bl1="[tibmodule0:KaptonBoxSterDz]" tl1="[tibmodule0:KaptonBoxSterDz]" h1="[tibmodpar:KaptonBoxDy]" alp2="0*deg" bl2="[tibmodule0:KaptonBoxSterDz]" tl2="[tibmodule0:KaptonBoxSterDz]" h2="[tibmodpar:KaptonBoxDy]" phi="0*deg" theta="-[tibmodpar:StereoAngle]"/>
+		<Trapezoid name="TIBPA2" dz="[tibmodule0:PASterDx]" alp1="0*deg" bl1="[tibmodule0:PASterDz1]" tl1="[tibmodule0:PASterDz1]" h1="[tibmodpar:PADy]" alp2="0*deg" bl2="[tibmodule0:PASterDz2]" tl2="[tibmodule0:PASterDz2]" h2="[tibmodpar:PADy]" phi="0*deg" theta="-[tibmodpar:TrapSterTheta]"/>
+		<Trapezoid name="TIBLedgeSter" dz="[LedgeSterDx]" alp1="0*deg" bl1="[LedgeSterDz1]" tl1="[LedgeSterDz1]" h1="[LedgeSterDy]" alp2="0*deg" bl2="[LedgeSterDz2]" tl2="[LedgeSterDz2]" h2="[LedgeSterDy]" phi="0*deg" theta="-[tibmodpar:TrapSterTheta]"/>
+		<Box name="TIBLedgeSide" dx="[tibmodule0:LedgeSideDx]" dy="[tibmodule0:LedgeSideDy]" dz="[tibmodule0:LedgeSideDz]"/>
+		<Box name="TIBSpacerLedge" dx="[SpacerLedgeDx]" dy="[SpacerDy]" dz="[SpacerLedgeDz]"/>
+		<Box name="TIBSpacerHyb" dx="[SpacerHybDx]" dy="[SpacerDy]" dz="[SpacerHybDz]"/>
+		<Box name="TIBSpacerSide" dx="[SpacerSideDx]" dy="[SpacerDy]" dz="[SpacerSideDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tibmodule0.xml">
+		<LogicalPart name="TIBModCFFrameSter" category="unspecified">
+			<rSolid name="tibmodpar:TIBModCFFrame"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModCFFrameHybSter" category="unspecified">
+			<rSolid name="tibmodule0:TIBModCFFrameHybSter"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIBHybrid0" category="unspecified">
+			<rSolid name="tibmodpar:TIBHybrid"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		</LogicalPart>
+		<LogicalPart name="TIBModKaptonBoxSter" category="unspecified">
+			<rSolid name="tibmodule0:TIBModKaptonBoxSter"/>
+			<rMaterial name="tibmaterial:TIB_ModKaptonBox"/>
+		</LogicalPart>
+		<LogicalPart name="TIBPA2" category="unspecified">
+			<rSolid name="tibmodule0:TIBPA2"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_PA"/>
+		</LogicalPart>
+		<LogicalPart name="TIBLedgeSter" category="unspecified">
+			<rSolid name="tibmodule0:TIBLedgeSter"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TIBSpacerLedge" category="unspecified">
+			<rSolid name="tibmodule0:TIBSpacerLedge"/>
+			<rMaterial name="tibmaterial:TIB_Spacer"/>
+		</LogicalPart>
+		<LogicalPart name="TIBLedgeSide" category="unspecified">
+			<rSolid name="tibmodule0:TIBLedgeSide"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TIBSpacerHyb" category="unspecified">
+			<rSolid name="tibmodule0:TIBSpacerHyb"/>
+			<rMaterial name="tibmaterial:TIB_Spacer"/>
+		</LogicalPart>
+		<LogicalPart name="TIBSpacerSide" category="unspecified">
+			<rSolid name="tibmodule0:TIBSpacerSide"/>
+			<rMaterial name="tibmaterial:TIB_Spacer"/>
+		</LogicalPart>
+		<LogicalPart name="TIBWaferRphi0" category="unspecified">
+			<rSolid name="tibmodpar:TIBDSWafer"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TIBActiveRphi0" category="unspecified">
+			<rSolid name="tibmodpar:TIBDSActive"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TIBWaferSter0" category="unspecified">
+			<rSolid name="tibmodpar:TIBDSWafer"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TIBActiveSter0" category="unspecified">
+			<rSolid name="tibmodpar:TIBDSActive"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibmodule0.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0:TIBWaferRphi0"/>
+			<rChild name="tibmodule0:TIBActiveRphi0"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0:TIBWaferSter0"/>
+			<rChild name="tibmodule0:TIBActiveSter0"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0:TIBModKaptonBoxSter"/>
+			<rChild name="tibmodpar:TIBModKaptonBoxHole"/>
+			<Translation x="[KaptonBoxHoleSterX]" y="[zero]" z="[KaptonBoxHoleSterZ]"/>
+			<rRotation name="tibmodpar:KaptonBoxHoleSterA"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0:TIBModCFFrameSter"/>
+			<rChild name="tibmodpar:TIBModCFFrameHole"/>
+			<rRotation name="tibmodpar:CFFrameHoleSterA"/>
+			<Translation x="sin([tibmodpar:StereoAngle])*[tibmodpar:CFFrameHoleOffset]" y="[zero]" z="[tibmodpar:CFFrameHoleZ]-cos([tibmodpar:StereoAngle])*[tibmodpar:CFFrameHoleOffset]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibmodule0a.xml b/examples/DDCMS/data/tibmodule0a.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14ddc7efc90506af2ad360c6f37e5beb03a34bad
--- /dev/null
+++ b/examples/DDCMS/data/tibmodule0a.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibmodule0a.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibmodule0a.xml">
+		<LogicalPart name="TIBModule0A" category="unspecified">
+			<rSolid name="tibmodpar:TIBDSModule"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibmodule0a.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBWaferRphi0"/>
+			<rRotation name="tibmodpar:Rphi"/>
+			<Translation x="[zero]" y="[tibmodule0:WaferRPhiY]" z="[tibmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBWaferSter0"/>
+			<rRotation name="tibmodpar:SterA"/>
+			<Translation x="[zero]" y="[tibmodule0:WaferSterY]" z="[tibmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBHybrid0"/>
+			<Translation x="[zero]" y="[tibmodule0:HybridRPhiY]" z="-[tibmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBHybrid0"/>
+			<Translation x="[zero]" y="[tibmodule0:HybridSterY]" z="-[tibmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodpar:TIBPA1"/>
+			<Translation x="[zero]" y="[tibmodule0:PARPhiY]" z="-[tibmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBPA2"/>
+			<rRotation name="tibmodpar:PAA"/>
+			<Translation x="[tibmodule0:PASterX]" y="[tibmodule0:PASterY]" z="-[tibmodule0:PASterZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBLedgeSter"/>
+			<rRotation name="tibmodpar:PAA"/>
+			<Translation x="[zero]" y="[tibmodule0:LedgeSterY]" z="[tibmodule0:LedgeSterZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBLedgeSide"/>
+			<Translation x="[tibmodule0:LedgeSideX]" y="[tibmodule0:LedgeSideY]" z="[tibmodule0:LedgeSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBLedgeSide"/>
+			<Translation x="-[tibmodule0:LedgeSideX]" y="[tibmodule0:LedgeSideY]" z="[tibmodule0:LedgeSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBSpacerLedge"/>
+			<Translation x="[zero]" y="[tibmodule0:SpacerY]" z="[tibmodule0:SpacerLedgeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBSpacerHyb"/>
+			<Translation x="[zero]" y="[tibmodule0:SpacerY]" z="-[tibmodule0:SpacerHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBSpacerSide"/>
+			<Translation x="[tibmodule0:SpacerSideX]" y="[tibmodule0:SpacerY]" z="-[tibmodule0:SpacerSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBSpacerSide"/>
+			<Translation x="-[tibmodule0:SpacerSideX]" y="[tibmodule0:SpacerY]" z="-[tibmodule0:SpacerSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodpar:TIBModCFFrameRPhi"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameRPhiY]" z="[tibmodpar:CFFrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodpar:TIBModCFFrameHybRPhi"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameRPhiY]" z="[tibmodpar:CFFrameHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodpar:TIBModKaptonBoxRPhi"/>
+			<Translation x="[zero]" y="[tibmodule0:KaptonBoxRPhiY]" z="[tibmodpar:KaptonBoxZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBModCFFrameSter"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameSterY]" z="[tibmodpar:CFFrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBModCFFrameHybSter"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameSterY]" z="[tibmodpar:CFFrameHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0a:TIBModule0A"/>
+			<rChild name="tibmodule0:TIBModKaptonBoxSter"/>
+			<rRotation name="tibmodpar:PAA"/>
+			<Translation x="[zero]" y="[tibmodule0:KaptonBoxSterY]" z="[tibmodpar:WaferZ]+cos([tibmodpar:StereoAngle])*0.5*[tibmodule0:KaptonBoxSterOffset]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibmodule0b.xml b/examples/DDCMS/data/tibmodule0b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4cb33272811f6ee64455d88704d618bd8047c79e
--- /dev/null
+++ b/examples/DDCMS/data/tibmodule0b.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibmodule0b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibmodule0b.xml">
+		<LogicalPart name="TIBModule0B" category="unspecified">
+			<rSolid name="tibmodpar:TIBDSModule"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibmodule0b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBWaferRphi0"/>
+			<rRotation name="tibmodpar:Rphi"/>
+			<Translation x="[zero]" y="[tibmodule0:WaferRPhiY]" z="[tibmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBWaferSter0"/>
+			<rRotation name="tibmodpar:SterB"/>
+			<Translation x="[zero]" y="[tibmodule0:WaferSterY]" z="[tibmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBHybrid0"/>
+			<Translation x="[zero]" y="[tibmodule0:HybridRPhiY]" z="-[tibmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBHybrid0"/>
+			<Translation x="[zero]" y="[tibmodule0:HybridSterY]" z="-[tibmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodpar:TIBPA1"/>
+			<Translation x="[zero]" y="[tibmodule0:PARPhiY]" z="-[tibmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBPA2"/>
+			<rRotation name="tibmodpar:PAB"/>
+			<Translation x="-[tibmodule0:PASterX]" y="[tibmodule0:PASterY]" z="-[tibmodule0:PASterZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBLedgeSter"/>
+			<rRotation name="tibmodpar:PAB"/>
+			<Translation x="[zero]" y="[tibmodule0:LedgeSterY]" z="[tibmodule0:LedgeSterZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBLedgeSide"/>
+			<Translation x="[tibmodule0:LedgeSideX]" y="[tibmodule0:LedgeSideY]" z="[tibmodule0:LedgeSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBLedgeSide"/>
+			<Translation x="-[tibmodule0:LedgeSideX]" y="[tibmodule0:LedgeSideY]" z="[tibmodule0:LedgeSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBSpacerLedge"/>
+			<Translation x="[zero]" y="[tibmodule0:SpacerY]" z="[tibmodule0:SpacerLedgeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBSpacerHyb"/>
+			<Translation x="[zero]" y="[tibmodule0:SpacerY]" z="-[tibmodule0:SpacerHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBSpacerSide"/>
+			<Translation x="[tibmodule0:SpacerSideX]" y="[tibmodule0:SpacerY]" z="-[tibmodule0:SpacerSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBSpacerSide"/>
+			<Translation x="-[tibmodule0:SpacerSideX]" y="[tibmodule0:SpacerY]" z="-[tibmodule0:SpacerSideZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodpar:TIBModCFFrameRPhi"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameRPhiY]" z="[tibmodpar:CFFrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodpar:TIBModCFFrameHybRPhi"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameRPhiY]" z="[tibmodpar:CFFrameHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodpar:TIBModKaptonBoxRPhi"/>
+			<Translation x="[zero]" y="[tibmodule0:KaptonBoxRPhiY]" z="[tibmodpar:KaptonBoxZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBModCFFrameSter"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameSterY]" z="[tibmodpar:CFFrameZ]"/>
+			<rRotation name="tibmodpar:CFFrameSterB"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBModCFFrameHybSter"/>
+			<Translation x="[zero]" y="[tibmodule0:CFFrameSterY]" z="[tibmodpar:CFFrameHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule0b:TIBModule0B"/>
+			<rChild name="tibmodule0:TIBModKaptonBoxSter"/>
+			<rRotation name="tibmodpar:PAB"/>
+			<Translation x="[zero]" y="[tibmodule0:KaptonBoxSterY]" z="[tibmodpar:WaferZ]+cos([tibmodpar:StereoAngle])*0.5*[tibmodule0:KaptonBoxSterOffset]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibmodule2.xml b/examples/DDCMS/data/tibmodule2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..814641d60df9ef63851ac70044b936c34ec34aa5
--- /dev/null
+++ b/examples/DDCMS/data/tibmodule2.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibmodule2.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="HybridY" value="[CFFrameY]+[tibmodpar:CFFrameDy]+[tibmodpar:HybridDy]"/>
+		<Constant name="PAY" value="[CFFrameY]+[tibmodpar:CFFrameDy]+[tibmodpar:PADy]"/>
+		<Constant name="CFFrameY" value="-[tibmodpar:SSModuleDy]+[tibmodpar:CFFrameDy]"/>
+		<Constant name="KaptonBoxY" value="[CFFrameY]+[tibmodpar:CFFrameDy]+[tibmodpar:KaptonBoxDy]"/>
+		<Constant name="WaferY" value="-0.140*mm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibmodule2.xml">
+		<LogicalPart name="TIBModule2" category="unspecified">
+			<rSolid name="tibmodpar:TIBSSModule"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBHybrid2" category="unspecified">
+			<rSolid name="tibmodpar:TIBHybrid"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		</LogicalPart>
+		<LogicalPart name="TIBWaferRphi2" category="unspecified">
+			<rSolid name="tibmodpar:TIBSSWafer"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TIBActiveRphi2" category="unspecified">
+			<rSolid name="tibmodpar:TIBSSActive"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibmodule2.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBWaferRphi2"/>
+			<rChild name="tibmodule2:TIBActiveRphi2"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBModule2"/>
+			<rChild name="tibmodule2:TIBWaferRphi2"/>
+			<rRotation name="tibmodpar:Rphi"/>
+			<Translation x="[zero]" y="[tibmodule2:WaferY]" z="[tibmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBModule2"/>
+			<rChild name="tibmodule2:TIBHybrid2"/>
+			<Translation x="[zero]" y="[tibmodule2:HybridY]" z="-[tibmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBModule2"/>
+			<rChild name="tibmodpar:TIBPA1"/>
+			<Translation x="[zero]" y="[tibmodule2:PAY]" z="-[tibmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBModule2"/>
+			<rChild name="tibmodpar:TIBModCFFrameRPhi"/>
+			<Translation x="[zero]" y="[tibmodule2:CFFrameY]" z="[tibmodpar:CFFrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBModule2"/>
+			<rChild name="tibmodpar:TIBModCFFrameHybRPhi"/>
+			<Translation x="[zero]" y="[tibmodule2:CFFrameY]" z="[tibmodpar:CFFrameHybZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibmodule2:TIBModule2"/>
+			<rChild name="tibmodpar:TIBModKaptonBoxRPhi"/>
+			<Translation x="[zero]" y="[tibmodule2:KaptonBoxY]" z="[tibmodpar:KaptonBoxZ]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring0.xml b/examples/DDCMS/data/tibstring0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d93ea861e364d611201e681dd4f1463c60716a64
--- /dev/null
+++ b/examples/DDCMS/data/tibstring0.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibstring0.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="StringIntOff" value="36.74*mm"/>
+		<Constant name="StringExtOff" value="-11.89*mm"/>
+		<Constant name="StringLoMinL" value="0.5*[tibstringpar:StringL]+[StringIntOff]"/>
+		<Constant name="StringUpMinL" value="0.5*[tibstringpar:StringL]+[StringExtOff]"/>
+		<Constant name="StringLoPlsL" value="0.5*[tibstringpar:StringL]-[StringIntOff]"/>
+		<Constant name="StringUpPlsL" value="0.5*[tibstringpar:StringL]-[StringExtOff]"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibstring0.xml">
+		<LogicalPart name="TIBString0Lo1" category="unspecified">
+			<rSolid name="tibstringpar:TIBDSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBString0Up1" category="unspecified">
+			<rSolid name="tibstringpar:TIBDSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibstring0.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibstring0:TIBString0Lo1"/>
+			<rChild name="tibstring0ll:TIBString0LoMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring0:StringLoPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring0:TIBString0Lo1"/>
+			<rChild name="tibstring0lr:TIBString0LoPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring0:StringLoMinL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring0:TIBString0Up1"/>
+			<rChild name="tibstring0ul:TIBString0UpMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring0:StringUpPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring0:TIBString0Up1"/>
+			<rChild name="tibstring0ur:TIBString0UpPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring0:StringUpMinL]/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring0ll.xml b/examples/DDCMS/data/tibstring0ll.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ae377973fe5eed8777692a14d033fa41f3c30f6
--- /dev/null
+++ b/examples/DDCMS/data/tibstring0ll.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 1 INT BW -->
+    <ConstantsSection label="tibstring0ll.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT1Sign]"/>
+        <Constant name="MotherCableL" value="59.91*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring0:StringLoMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]+24.88*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-447.355*mm"/>
+        <Constant name="Det1Z" value="-242.709*mm"/>
+        <Constant name="Det2Z" value="-36.9380*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring0ll.xml">
+        <Box name="TIBString0LoMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0LoMinMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0LoMinSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString0LoMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString0LoMinLeftCutted">
+            <rSolid name="TIBString0LoMinMainPart"/>
+            <rSolid name="TIBString0LoMinSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString0LoMinModuleBox">
+            <rSolid name="TIBString0LoMinLeftCutted"/>
+            <rSolid name="TIBString0LoMinSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString0LoMinModAndCool">
+            <rSolid name="TIBString0LoMinModuleBox"/>
+            <rSolid name="TIBString0LoMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString0LoMin">
+            <rSolid name="TIBString0LoMinModAndCool"/>
+            <rSolid name="TIBString0LoMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString0LoMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString0LoMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString0LoMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring0ll.xml">
+        <LogicalPart name="TIBString0LoMin1" category="unspecified">
+            <rSolid name="TIBString0LoMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0LoMinCable" category="unspecified">
+            <rSolid name="TIBString0LoMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0LoMinCoolS" category="unspecified">
+            <rSolid name="TIBString0LoMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0LoMinCoolW" category="unspecified">
+            <rSolid name="TIBString0LoMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring0ll:TIBString0LoMin1"/>
+        <String name="ChildName" value="tibmodule0b:TIBModule0B"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring0ll.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ll:TIBString0LoMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ll:TIBString0LoMin1"/>
+            <rChild name="tibstring0ll:TIBString0LoMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ll:TIBString0LoMin1"/>
+            <rChild name="tibstring0ll:TIBString0LoMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring0ll:TIBString0LoMin1"/>
+            <rChild name="tibstring0ll:TIBString0LoMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ll:TIBString0LoMin1"/>
+            <rChild name="tibstring0ll:TIBString0LoMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ll:TIBString0LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ll:TIBString0LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ll:TIBString0LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ll:TIBString0LoMin1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring0lr.xml b/examples/DDCMS/data/tibstring0lr.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b5d7c43ae9b98787ce5a2bce1f7fa8fc9272308
--- /dev/null
+++ b/examples/DDCMS/data/tibstring0lr.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 1 INT FW -->
+    <ConstantsSection label="tibstring0lr.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT1Sign]"/>
+        <Constant name="MotherCableL" value="67.55*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring0:StringLoPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-39.50*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="169.080*mm"/>
+        <Constant name="Det1Z" value="374.129*mm"/>
+        <Constant name="Det2Z" value="578.058*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring0lr.xml">
+        <Box name="TIBString0LoPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0LoPlsMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0LoPlsSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString0LoPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString0LoPlsLeftCutted">
+            <rSolid name="TIBString0LoPlsMainPart"/>
+            <rSolid name="TIBString0LoPlsSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString0LoPlsModuleBox">
+            <rSolid name="TIBString0LoPlsLeftCutted"/>
+            <rSolid name="TIBString0LoPlsSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString0LoPlsModAndCool">
+            <rSolid name="TIBString0LoPlsModuleBox"/>
+            <rSolid name="TIBString0LoPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString0LoPls">
+            <rSolid name="TIBString0LoPlsModAndCool"/>
+            <rSolid name="TIBString0LoPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString0LoPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString0LoPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString0LoPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring0lr.xml">
+        <LogicalPart name="TIBString0LoPls1" category="unspecified">
+            <rSolid name="TIBString0LoPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0LoPlsCable" category="unspecified">
+            <rSolid name="TIBString0LoPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0LoPlsCoolS" category="unspecified">
+            <rSolid name="TIBString0LoPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0LoPlsCoolW" category="unspecified">
+            <rSolid name="TIBString0LoPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring0lr:TIBString0LoPls1"/>
+        <String name="ChildName" value="tibmodule0b:TIBModule0B"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring0lr.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0lr:TIBString0LoPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0lr:TIBString0LoPls1"/>
+            <rChild name="tibstring0lr:TIBString0LoPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0lr:TIBString0LoPls1"/>
+            <rChild name="tibstring0lr:TIBString0LoPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring0lr:TIBString0LoPls1"/>
+            <rChild name="tibstring0lr:TIBString0LoPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0lr:TIBString0LoPls1"/>
+            <rChild name="tibstring0lr:TIBString0LoPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0lr:TIBString0LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0lr:TIBString0LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0lr:TIBString0LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0lr:TIBString0LoPls1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring0ul.xml b/examples/DDCMS/data/tibstring0ul.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7195346cd6c17ac90ac395f3c4e27e1dc66f73fe
--- /dev/null
+++ b/examples/DDCMS/data/tibstring0ul.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 1 EXT BW -->
+    <ConstantsSection label="tibstring0ul.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT1Sign]"/>
+        <Constant name="MotherCableL" value="68.84*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring0:StringUpMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-28.77*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-605.456*mm"/>
+        <Constant name="Det1Z" value="-394.872*mm"/>
+        <Constant name="Det2Z" value="-160.198*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring0ul.xml">
+        <Box name="TIBString0UpMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0UpMinMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0UpMinSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString0UpMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString0UpMinLeftCutted">
+            <rSolid name="TIBString0UpMinMainPart"/>
+            <rSolid name="TIBString0UpMinSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString0UpMinModuleBox">
+            <rSolid name="TIBString0UpMinLeftCutted"/>
+            <rSolid name="TIBString0UpMinSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString0UpMinModAndCool">
+            <rSolid name="TIBString0UpMinModuleBox"/>
+            <rSolid name="TIBString0UpMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString0UpMin">
+            <rSolid name="TIBString0UpMinModAndCool"/>
+            <rSolid name="TIBString0UpMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString0UpMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString0UpMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString0UpMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring0ul.xml">
+        <LogicalPart name="TIBString0UpMin1" category="unspecified">
+            <rSolid name="TIBString0UpMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0UpMinCable" category="unspecified">
+            <rSolid name="TIBString0UpMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0UpMinCoolS" category="unspecified">
+            <rSolid name="TIBString0UpMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0UpMinCoolW" category="unspecified">
+            <rSolid name="TIBString0UpMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring0ul:TIBString0UpMin1"/>
+        <String name="ChildName" value="tibmodule0a:TIBModule0A"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring0ul.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ul:TIBString0UpMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ul:TIBString0UpMin1"/>
+            <rChild name="tibstring0ul:TIBString0UpMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ul:TIBString0UpMin1"/>
+            <rChild name="tibstring0ul:TIBString0UpMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring0ul:TIBString0UpMin1"/>
+            <rChild name="tibstring0ul:TIBString0UpMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ul:TIBString0UpMin1"/>
+            <rChild name="tibstring0ul:TIBString0UpMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ul:TIBString0UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ul:TIBString0UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ul:TIBString0UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ul:TIBString0UpMin1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring0ur.xml b/examples/DDCMS/data/tibstring0ur.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8cf34eee30c171737399baefd826280967409f74
--- /dev/null
+++ b/examples/DDCMS/data/tibstring0ur.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 1 EXT FW -->
+    <ConstantsSection label="tibstring0ur.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT1Sign]"/>
+        <Constant name="MotherCableL" value="56.02*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring0:StringUpPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-14.07*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="75.7660*mm"/>
+        <Constant name="Det1Z" value="310.901*mm"/>
+        <Constant name="Det2Z" value="544.753*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring0ur.xml">
+        <Box name="TIBString0UpPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0UpPlsMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString0UpPlsSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString0UpPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString0UpPlsLeftCutted">
+            <rSolid name="TIBString0UpPlsMainPart"/>
+            <rSolid name="TIBString0UpPlsSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString0UpPlsModuleBox">
+            <rSolid name="TIBString0UpPlsLeftCutted"/>
+            <rSolid name="TIBString0UpPlsSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString0UpPlsModAndCool">
+            <rSolid name="TIBString0UpPlsModuleBox"/>
+            <rSolid name="TIBString0UpPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString0UpPls">
+            <rSolid name="TIBString0UpPlsModAndCool"/>
+            <rSolid name="TIBString0UpPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString0UpPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString0UpPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString0UpPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring0ur.xml">
+        <LogicalPart name="TIBString0UpPls1" category="unspecified">
+            <rSolid name="TIBString0UpPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0UpPlsCable" category="unspecified">
+            <rSolid name="TIBString0UpPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0UpPlsCoolS" category="unspecified">
+            <rSolid name="TIBString0UpPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString0UpPlsCoolW" category="unspecified">
+            <rSolid name="TIBString0UpPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring0ur:TIBString0UpPls1"/>
+        <String name="ChildName" value="tibmodule0a:TIBModule0A"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring0ur.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ur:TIBString0UpPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ur:TIBString0UpPls1"/>
+            <rChild name="tibstring0ur:TIBString0UpPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ur:TIBString0UpPls1"/>
+            <rChild name="tibstring0ur:TIBString0UpPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring0ur:TIBString0UpPls1"/>
+            <rChild name="tibstring0ur:TIBString0UpPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring0ur:TIBString0UpPls1"/>
+            <rChild name="tibstring0ur:TIBString0UpPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ur:TIBString0UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ur:TIBString0UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ur:TIBString0UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring0ur:TIBString0UpPls1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring1.xml b/examples/DDCMS/data/tibstring1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6f1fa9b2ee47e266b64b1bc826352b3055bf7862
--- /dev/null
+++ b/examples/DDCMS/data/tibstring1.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibstring1.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="StringIntOff" value="-45.15*mm"/>
+		<Constant name="StringExtOff" value="-2.35*mm"/>
+		<Constant name="StringLoMinL" value="0.5*[tibstringpar:StringL]+[StringIntOff]"/>
+		<Constant name="StringUpMinL" value="0.5*[tibstringpar:StringL]+[StringExtOff]"/>
+		<Constant name="StringLoPlsL" value="0.5*[tibstringpar:StringL]-[StringIntOff]"/>
+		<Constant name="StringUpPlsL" value="0.5*[tibstringpar:StringL]-[StringExtOff]"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibstring1.xml">
+		<LogicalPart name="TIBString1Lo1" category="unspecified">
+			<rSolid name="tibstringpar:TIBDSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBString1Up1" category="unspecified">
+			<rSolid name="tibstringpar:TIBDSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibstring1.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibstring1:TIBString1Lo1"/>
+			<rChild name="tibstring1ll:TIBString1LoMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring1:StringLoPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring1:TIBString1Lo1"/>
+			<rChild name="tibstring1lr:TIBString1LoPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring1:StringLoMinL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring1:TIBString1Up1"/>
+			<rChild name="tibstring1ul:TIBString1UpMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring1:StringUpPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring1:TIBString1Up1"/>
+			<rChild name="tibstring1ur:TIBString1UpPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring1:StringUpMinL]/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring1ll.xml b/examples/DDCMS/data/tibstring1ll.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b1aa2817191d9e010410bb1c37ce43da20ab4c42
--- /dev/null
+++ b/examples/DDCMS/data/tibstring1ll.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 2 INT BW -->
+    <ConstantsSection label="tibstring1ll.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT2Sign]"/>
+        <Constant name="MotherCableL" value="66.84*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring1:StringLoMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-49.14*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-597.651*mm"/>
+        <Constant name="Det1Z" value="-389.269*mm"/>
+        <Constant name="Det2Z" value="-180.228*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring1ll.xml">
+        <Box name="TIBString1LoMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1LoMinMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1LoMinSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString1LoMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString1LoMinLeftCutted">
+            <rSolid name="TIBString1LoMinMainPart"/>
+            <rSolid name="TIBString1LoMinSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString1LoMinModuleBox">
+            <rSolid name="TIBString1LoMinLeftCutted"/>
+            <rSolid name="TIBString1LoMinSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString1LoMinModAndCool">
+            <rSolid name="TIBString1LoMinModuleBox"/>
+            <rSolid name="TIBString1LoMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString1LoMin">
+            <rSolid name="TIBString1LoMinModAndCool"/>
+            <rSolid name="TIBString1LoMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString1LoMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString1LoMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString1LoMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring1ll.xml">
+        <LogicalPart name="TIBString1LoMin1" category="unspecified">
+            <rSolid name="TIBString1LoMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1LoMinCable" category="unspecified">
+            <rSolid name="TIBString1LoMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1LoMinCoolS" category="unspecified">
+            <rSolid name="TIBString1LoMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1LoMinCoolW" category="unspecified">
+            <rSolid name="TIBString1LoMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring1ll:TIBString1LoMin1"/>
+        <String name="ChildName" value="tibmodule0a:TIBModule0A"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring1ll.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ll:TIBString1LoMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ll:TIBString1LoMin1"/>
+            <rChild name="tibstring1ll:TIBString1LoMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ll:TIBString1LoMin1"/>
+            <rChild name="tibstring1ll:TIBString1LoMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring1ll:TIBString1LoMin1"/>
+            <rChild name="tibstring1ll:TIBString1LoMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ll:TIBString1LoMin1"/>
+            <rChild name="tibstring1ll:TIBString1LoMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ll:TIBString1LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ll:TIBString1LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ll:TIBString1LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ll:TIBString1LoMin1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring1lr.xml b/examples/DDCMS/data/tibstring1lr.xml
new file mode 100644
index 0000000000000000000000000000000000000000..74409ee8deaaffebdae9cc40037e093643286316
--- /dev/null
+++ b/examples/DDCMS/data/tibstring1lr.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 2 INT FW -->
+    <ConstantsSection label="tibstring1lr.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT2Sign]"/>
+        <Constant name="MotherCableL" value="60.68*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring1:StringLoPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]+32.44*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="29.3600*mm"/>
+        <Constant name="Det1Z" value="238.876*mm"/>
+        <Constant name="Det2Z" value="447.732*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring1lr.xml">
+        <Box name="TIBString1LoPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1LoPlsMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1LoPlsSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString1LoPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString1LoPlsLeftCutted">
+            <rSolid name="TIBString1LoPlsMainPart"/>
+            <rSolid name="TIBString1LoPlsSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString1LoPlsModuleBox">
+            <rSolid name="TIBString1LoPlsLeftCutted"/>
+            <rSolid name="TIBString1LoPlsSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString1LoPlsModAndCool">
+            <rSolid name="TIBString1LoPlsModuleBox"/>
+            <rSolid name="TIBString1LoPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString1LoPls">
+            <rSolid name="TIBString1LoPlsModAndCool"/>
+            <rSolid name="TIBString1LoPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString1LoPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString1LoPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString1LoPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring1lr.xml">
+        <LogicalPart name="TIBString1LoPls1" category="unspecified">
+            <rSolid name="TIBString1LoPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1LoPlsCable" category="unspecified">
+            <rSolid name="TIBString1LoPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1LoPlsCoolS" category="unspecified">
+            <rSolid name="TIBString1LoPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1LoPlsCoolW" category="unspecified">
+            <rSolid name="TIBString1LoPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring1lr:TIBString1LoPls1"/>
+        <String name="ChildName" value="tibmodule0a:TIBModule0A"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring1lr.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1lr:TIBString1LoPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1lr:TIBString1LoPls1"/>
+            <rChild name="tibstring1lr:TIBString1LoPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1lr:TIBString1LoPls1"/>
+            <rChild name="tibstring1lr:TIBString1LoPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring1lr:TIBString1LoPls1"/>
+            <rChild name="tibstring1lr:TIBString1LoPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1lr:TIBString1LoPls1"/>
+            <rChild name="tibstring1lr:TIBString1LoPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1lr:TIBString1LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1lr:TIBString1LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1lr:TIBString1LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1lr:TIBString1LoPls1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring1ul.xml b/examples/DDCMS/data/tibstring1ul.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e97cfd218dbdcc87016f4913a527d8b7f896090b
--- /dev/null
+++ b/examples/DDCMS/data/tibstring1ul.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 2 EXT BW -->
+    <ConstantsSection label="tibstring1ul.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT2Sign]"/>
+        <Constant name="MotherCableL" value="55.23*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring1:StringUpMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-14.30*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-546.373*mm"/>
+        <Constant name="Det1Z" value="-315.364*mm"/>
+        <Constant name="Det2Z" value="-83.6250*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring1ul.xml">
+        <Box name="TIBString1UpMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1UpMinMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1UpMinSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString1UpMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString1UpMinLeftCutted">
+            <rSolid name="TIBString1UpMinMainPart"/>
+            <rSolid name="TIBString1UpMinSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString1UpMinModuleBox">
+            <rSolid name="TIBString1UpMinLeftCutted"/>
+            <rSolid name="TIBString1UpMinSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString1UpMinModAndCool">
+            <rSolid name="TIBString1UpMinModuleBox"/>
+            <rSolid name="TIBString1UpMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString1UpMin">
+            <rSolid name="TIBString1UpMinModAndCool"/>
+            <rSolid name="TIBString1UpMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString1UpMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString1UpMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString1UpMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring1ul.xml">
+        <LogicalPart name="TIBString1UpMin1" category="unspecified">
+            <rSolid name="TIBString1UpMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1UpMinCable" category="unspecified">
+            <rSolid name="TIBString1UpMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1UpMinCoolS" category="unspecified">
+            <rSolid name="TIBString1UpMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1UpMinCoolW" category="unspecified">
+            <rSolid name="TIBString1UpMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring1ul:TIBString1UpMin1"/>
+        <String name="ChildName" value="tibmodule0b:TIBModule0B"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring1ul.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ul:TIBString1UpMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ul:TIBString1UpMin1"/>
+            <rChild name="tibstring1ul:TIBString1UpMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ul:TIBString1UpMin1"/>
+            <rChild name="tibstring1ul:TIBString1UpMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring1ul:TIBString1UpMin1"/>
+            <rChild name="tibstring1ul:TIBString1UpMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ul:TIBString1UpMin1"/>
+            <rChild name="tibstring1ul:TIBString1UpMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ul:TIBString1UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ul:TIBString1UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ul:TIBString1UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ul:TIBString1UpMin1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring1ur.xml b/examples/DDCMS/data/tibstring1ur.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee26fd6499201a9edac3904958971b84a5016f34
--- /dev/null
+++ b/examples/DDCMS/data/tibstring1ur.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 2 EXT FW -->
+    <ConstantsSection label="tibstring1ur.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT2Sign]"/>
+        <Constant name="MotherCableL" value="70.00*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring1:StringUpPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-18.66*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="148.641*mm"/>
+        <Constant name="Det1Z" value="380.176*mm"/>
+        <Constant name="Det2Z" value="605.456*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring1ur.xml">
+        <Box name="TIBString1UpPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1UpPlsMainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString1UpPlsSideCut" dx="[tibmodpar:DSModuleSideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[ThisStringL]/2+[tibmodpar:SideCutExtraZ]"/>
+        <Box name="TIBString1UpPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <SubtractionSolid name="TIBString1UpPlsLeftCutted">
+            <rSolid name="TIBString1UpPlsMainPart"/>
+            <rSolid name="TIBString1UpPlsSideCut"/>
+            <Translation x="-[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <SubtractionSolid name="TIBString1UpPlsModuleBox">
+            <rSolid name="TIBString1UpPlsLeftCutted"/>
+            <rSolid name="TIBString1UpPlsSideCut"/>
+            <Translation x="[tibmodpar:DSModuleSideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="0."/>
+        </SubtractionSolid>
+        <UnionSolid name="TIBString1UpPlsModAndCool">
+            <rSolid name="TIBString1UpPlsModuleBox"/>
+            <rSolid name="TIBString1UpPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString1UpPls">
+            <rSolid name="TIBString1UpPlsModAndCool"/>
+            <rSolid name="TIBString1UpPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString1UpPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString1UpPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString1UpPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring1ur.xml">
+        <LogicalPart name="TIBString1UpPls1" category="unspecified">
+            <rSolid name="TIBString1UpPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1UpPlsCable" category="unspecified">
+            <rSolid name="TIBString1UpPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1UpPlsCoolS" category="unspecified">
+            <rSolid name="TIBString1UpPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString1UpPlsCoolW" category="unspecified">
+            <rSolid name="TIBString1UpPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring1ur:TIBString1UpPls1"/>
+        <String name="ChildName" value="tibmodule0b:TIBModule0B"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring1ur.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ur:TIBString1UpPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:DSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ur:TIBString1UpPls1"/>
+            <rChild name="tibstring1ur:TIBString1UpPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:DSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ur:TIBString1UpPls1"/>
+            <rChild name="tibstring1ur:TIBString1UpPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring1ur:TIBString1UpPls1"/>
+            <rChild name="tibstring1ur:TIBString1UpPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:DSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring1ur:TIBString1UpPls1"/>
+            <rChild name="tibstring1ur:TIBString1UpPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:DSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ur:TIBString1UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ur:TIBString1UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY], [tibmodpar:DSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ur:TIBString1UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBDSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY], [tibmodpar:DSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring1ur:TIBString1UpPls1"/>
+        <String name="ChildName" value="tibstringpar:DSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY], [tibstringpar:DSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring2.xml b/examples/DDCMS/data/tibstring2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dfe479b1b9d09aac92d0cd9f0a9459944d5ed17a
--- /dev/null
+++ b/examples/DDCMS/data/tibstring2.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibstring2.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="StringIntOff" value="38.87*mm"/>
+		<Constant name="StringExtOff" value="-8.73*mm"/>
+		<Constant name="StringLoMinL" value="0.5*[tibstringpar:StringL]+[StringIntOff]"/>
+		<Constant name="StringUpMinL" value="0.5*[tibstringpar:StringL]+[StringExtOff]"/>
+		<Constant name="StringLoPlsL" value="0.5*[tibstringpar:StringL]-[StringIntOff]"/>
+		<Constant name="StringUpPlsL" value="0.5*[tibstringpar:StringL]-[StringExtOff]"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibstring2.xml">
+		<LogicalPart name="TIBString2Lo1" category="unspecified">
+			<rSolid name="tibstringpar:TIBSSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBString2Up1" category="unspecified">
+			<rSolid name="tibstringpar:TIBSSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibstring2.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibstring2:TIBString2Lo1"/>
+			<rChild name="tibstring2ll:TIBString2LoMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring2:StringLoPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring2:TIBString2Lo1"/>
+			<rChild name="tibstring2lr:TIBString2LoPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring2:StringLoMinL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring2:TIBString2Up1"/>
+			<rChild name="tibstring2ul:TIBString2UpMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring2:StringUpPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring2:TIBString2Up1"/>
+			<rChild name="tibstring2ur:TIBString2UpPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring2:StringUpMinL]/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring2ll.xml b/examples/DDCMS/data/tibstring2ll.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8c58e5ad588535fa9987981a0bb8e4957a0207e7
--- /dev/null
+++ b/examples/DDCMS/data/tibstring2ll.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 3 INT BW -->
+    <ConstantsSection label="tibstring2ll.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT3Sign]"/>
+        <Constant name="MotherCableL" value="59.99*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring2:StringLoMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]+24.93*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-456.191*mm"/>
+        <Constant name="Det1Z" value="-246.263*mm"/>
+        <Constant name="Det2Z" value="-36.0950*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring2ll.xml">
+        <Box name="TIBString2LoMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2LoMinModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2LoMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString2LoMinModAndCool">
+            <rSolid name="TIBString2LoMinModuleBox"/>
+            <rSolid name="TIBString2LoMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString2LoMin">
+            <rSolid name="TIBString2LoMinModAndCool"/>
+            <rSolid name="TIBString2LoMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString2LoMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString2LoMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString2LoMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring2ll.xml">
+        <LogicalPart name="TIBString2LoMin1" category="unspecified">
+            <rSolid name="TIBString2LoMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2LoMinCable" category="unspecified">
+            <rSolid name="TIBString2LoMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2LoMinCoolS" category="unspecified">
+            <rSolid name="TIBString2LoMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2LoMinCoolW" category="unspecified">
+            <rSolid name="TIBString2LoMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring2ll:TIBString2LoMin1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring2ll.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ll:TIBString2LoMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ll:TIBString2LoMin1"/>
+            <rChild name="tibstring2ll:TIBString2LoMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ll:TIBString2LoMin1"/>
+            <rChild name="tibstring2ll:TIBString2LoMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring2ll:TIBString2LoMin1"/>
+            <rChild name="tibstring2ll:TIBString2LoMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ll:TIBString2LoMin1"/>
+            <rChild name="tibstring2ll:TIBString2LoMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ll:TIBString2LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ll:TIBString2LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ll:TIBString2LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ll:TIBString2LoMin1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring2lr.xml b/examples/DDCMS/data/tibstring2lr.xml
new file mode 100644
index 0000000000000000000000000000000000000000..68b943d8365d7827ae02b681d3cb225a2475939d
--- /dev/null
+++ b/examples/DDCMS/data/tibstring2lr.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 3 INT FW -->
+    <ConstantsSection label="tibstring2lr.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT3Sign]"/>
+        <Constant name="MotherCableL" value="67.44*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring2:StringLoPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-42.72*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="174.198*mm"/>
+        <Constant name="Det1Z" value="384.254*mm"/>
+        <Constant name="Det2Z" value="593.937*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring2lr.xml">
+        <Box name="TIBString2LoPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2LoPlsModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2LoPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString2LoPlsModAndCool">
+            <rSolid name="TIBString2LoPlsModuleBox"/>
+            <rSolid name="TIBString2LoPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString2LoPls">
+            <rSolid name="TIBString2LoPlsModAndCool"/>
+            <rSolid name="TIBString2LoPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString2LoPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString2LoPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString2LoPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring2lr.xml">
+        <LogicalPart name="TIBString2LoPls1" category="unspecified">
+            <rSolid name="TIBString2LoPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2LoPlsCable" category="unspecified">
+            <rSolid name="TIBString2LoPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2LoPlsCoolS" category="unspecified">
+            <rSolid name="TIBString2LoPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2LoPlsCoolW" category="unspecified">
+            <rSolid name="TIBString2LoPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring2lr:TIBString2LoPls1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring2lr.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2lr:TIBString2LoPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2lr:TIBString2LoPls1"/>
+            <rChild name="tibstring2lr:TIBString2LoPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2lr:TIBString2LoPls1"/>
+            <rChild name="tibstring2lr:TIBString2LoPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring2lr:TIBString2LoPls1"/>
+            <rChild name="tibstring2lr:TIBString2LoPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2lr:TIBString2LoPls1"/>
+            <rChild name="tibstring2lr:TIBString2LoPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2lr:TIBString2LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2lr:TIBString2LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2lr:TIBString2LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2lr:TIBString2LoPls1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring2ul.xml b/examples/DDCMS/data/tibstring2ul.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7da6da682d8a9d1b2e4667f02876a3409192a98d
--- /dev/null
+++ b/examples/DDCMS/data/tibstring2ul.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 3 EXT BW -->
+    <ConstantsSection label="tibstring2ul.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT3Sign]"/>
+        <Constant name="MotherCableL" value="69.60*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring2:StringUpMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-20.57*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-605.456*mm"/>
+        <Constant name="Det1Z" value="-379.133*mm"/>
+        <Constant name="Det2Z" value="-152.408*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring2ul.xml">
+        <Box name="TIBString2UpMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2UpMinModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2UpMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString2UpMinModAndCool">
+            <rSolid name="TIBString2UpMinModuleBox"/>
+            <rSolid name="TIBString2UpMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString2UpMin">
+            <rSolid name="TIBString2UpMinModAndCool"/>
+            <rSolid name="TIBString2UpMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString2UpMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString2UpMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString2UpMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring2ul.xml">
+        <LogicalPart name="TIBString2UpMin1" category="unspecified">
+            <rSolid name="TIBString2UpMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2UpMinCable" category="unspecified">
+            <rSolid name="TIBString2UpMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2UpMinCoolS" category="unspecified">
+            <rSolid name="TIBString2UpMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2UpMinCoolW" category="unspecified">
+            <rSolid name="TIBString2UpMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring2ul:TIBString2UpMin1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring2ul.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ul:TIBString2UpMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ul:TIBString2UpMin1"/>
+            <rChild name="tibstring2ul:TIBString2UpMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ul:TIBString2UpMin1"/>
+            <rChild name="tibstring2ul:TIBString2UpMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring2ul:TIBString2UpMin1"/>
+            <rChild name="tibstring2ul:TIBString2UpMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ul:TIBString2UpMin1"/>
+            <rChild name="tibstring2ul:TIBString2UpMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ul:TIBString2UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ul:TIBString2UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ul:TIBString2UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ul:TIBString2UpMin1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring2ur.xml b/examples/DDCMS/data/tibstring2ur.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f7432b35ea3a9dc1e2beba60a49def54ffe16ba0
--- /dev/null
+++ b/examples/DDCMS/data/tibstring2ur.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 3 EXT FW -->
+    <ConstantsSection label="tibstring2ur.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT3Sign]"/>
+        <Constant name="MotherCableL" value="56.14*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring2:StringUpPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-13.76*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="74.5760*mm"/>
+        <Constant name="Det1Z" value="301.441*mm"/>
+        <Constant name="Det2Z" value="527.901*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring2ur.xml">
+        <Box name="TIBString2UpPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2UpPlsModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString2UpPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString2UpPlsModAndCool">
+            <rSolid name="TIBString2UpPlsModuleBox"/>
+            <rSolid name="TIBString2UpPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString2UpPls">
+            <rSolid name="TIBString2UpPlsModAndCool"/>
+            <rSolid name="TIBString2UpPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString2UpPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString2UpPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString2UpPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring2ur.xml">
+        <LogicalPart name="TIBString2UpPls1" category="unspecified">
+            <rSolid name="TIBString2UpPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2UpPlsCable" category="unspecified">
+            <rSolid name="TIBString2UpPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2UpPlsCoolS" category="unspecified">
+            <rSolid name="TIBString2UpPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString2UpPlsCoolW" category="unspecified">
+            <rSolid name="TIBString2UpPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring2ur:TIBString2UpPls1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring2ur.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ur:TIBString2UpPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ur:TIBString2UpPls1"/>
+            <rChild name="tibstring2ur:TIBString2UpPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ur:TIBString2UpPls1"/>
+            <rChild name="tibstring2ur:TIBString2UpPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring2ur:TIBString2UpPls1"/>
+            <rChild name="tibstring2ur:TIBString2UpPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring2ur:TIBString2UpPls1"/>
+            <rChild name="tibstring2ur:TIBString2UpPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ur:TIBString2UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ur:TIBString2UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ur:TIBString2UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring2ur:TIBString2UpPls1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring3.xml b/examples/DDCMS/data/tibstring3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63b17e298f6ea9606c3ed99582af6bccb3f81429
--- /dev/null
+++ b/examples/DDCMS/data/tibstring3.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibstring3.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="StringIntOff" value="-42.17*mm"/>
+		<Constant name="StringExtOff" value="6.59*mm"/>
+		<Constant name="StringLoMinL" value="0.5*[tibstringpar:StringL]+[StringIntOff]"/>
+		<Constant name="StringUpMinL" value="0.5*[tibstringpar:StringL]+[StringExtOff]"/>
+		<Constant name="StringLoPlsL" value="0.5*[tibstringpar:StringL]-[StringIntOff]"/>
+		<Constant name="StringUpPlsL" value="0.5*[tibstringpar:StringL]-[StringExtOff]"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibstring3.xml">
+		<LogicalPart name="TIBString3Lo1" category="unspecified">
+			<rSolid name="tibstringpar:TIBSSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBString3Up1" category="unspecified">
+			<rSolid name="tibstringpar:TIBSSString1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibstring3.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibstring3:TIBString3Lo1"/>
+			<rChild name="tibstring3ll:TIBString3LoMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring3:StringLoPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring3:TIBString3Lo1"/>
+			<rChild name="tibstring3lr:TIBString3LoPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring3:StringLoMinL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring3:TIBString3Up1"/>
+			<rChild name="tibstring3ul:TIBString3UpMin1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tibstring3:StringUpPlsL]/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibstring3:TIBString3Up1"/>
+			<rChild name="tibstring3ur:TIBString3UpPls1"/>
+			<Translation x="[zero]" y="[zero]" z="[tibstring3:StringUpMinL]/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring3ll.xml b/examples/DDCMS/data/tibstring3ll.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e71f99caadcd59a4fdd2b8c212c4fb27c066bdc
--- /dev/null
+++ b/examples/DDCMS/data/tibstring3ll.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 4 INT BW -->
+    <ConstantsSection label="tibstring3ll.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT4Sign]"/>
+        <Constant name="MotherCableL" value="67.04*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring3:StringLoMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-45.52*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-605.456*mm"/>
+        <Constant name="Det1Z" value="-391.972*mm"/>
+        <Constant name="Det2Z" value="-178.218*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring3ll.xml">
+        <Box name="TIBString3LoMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3LoMinModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3LoMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString3LoMinModAndCool">
+            <rSolid name="TIBString3LoMinModuleBox"/>
+            <rSolid name="TIBString3LoMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString3LoMin">
+            <rSolid name="TIBString3LoMinModAndCool"/>
+            <rSolid name="TIBString3LoMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString3LoMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString3LoMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString3LoMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring3ll.xml">
+        <LogicalPart name="TIBString3LoMin1" category="unspecified">
+            <rSolid name="TIBString3LoMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3LoMinCable" category="unspecified">
+            <rSolid name="TIBString3LoMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3LoMinCoolS" category="unspecified">
+            <rSolid name="TIBString3LoMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3LoMinCoolW" category="unspecified">
+            <rSolid name="TIBString3LoMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring3ll:TIBString3LoMin1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring3ll.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ll:TIBString3LoMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ll:TIBString3LoMin1"/>
+            <rChild name="tibstring3ll:TIBString3LoMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ll:TIBString3LoMin1"/>
+            <rChild name="tibstring3ll:TIBString3LoMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring3ll:TIBString3LoMin1"/>
+            <rChild name="tibstring3ll:TIBString3LoMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ll:TIBString3LoMin1"/>
+            <rChild name="tibstring3ll:TIBString3LoMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ll:TIBString3LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ll:TIBString3LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ll:TIBString3LoMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ll:TIBString3LoMin1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring3lr.xml b/examples/DDCMS/data/tibstring3lr.xml
new file mode 100644
index 0000000000000000000000000000000000000000..112fcf3ff762831c72ed3ff241f055ecd818da6b
--- /dev/null
+++ b/examples/DDCMS/data/tibstring3lr.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 4 INT FW -->
+    <ConstantsSection label="tibstring3lr.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:INT4Sign]"/>
+        <Constant name="MotherCableL" value="60.25*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring3:StringLoPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]+38.08*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="33.5070*mm"/>
+        <Constant name="Det1Z" value="247.444*mm"/>
+        <Constant name="Det2Z" value="461.110*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring3lr.xml">
+        <Box name="TIBString3LoPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3LoPlsModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3LoPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString3LoPlsModAndCool">
+            <rSolid name="TIBString3LoPlsModuleBox"/>
+            <rSolid name="TIBString3LoPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString3LoPls">
+            <rSolid name="TIBString3LoPlsModAndCool"/>
+            <rSolid name="TIBString3LoPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString3LoPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString3LoPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString3LoPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring3lr.xml">
+        <LogicalPart name="TIBString3LoPls1" category="unspecified">
+            <rSolid name="TIBString3LoPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3LoPlsCable" category="unspecified">
+            <rSolid name="TIBString3LoPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3LoPlsCoolS" category="unspecified">
+            <rSolid name="TIBString3LoPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3LoPlsCoolW" category="unspecified">
+            <rSolid name="TIBString3LoPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring3lr:TIBString3LoPls1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring3lr.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3lr:TIBString3LoPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3lr:TIBString3LoPls1"/>
+            <rChild name="tibstring3lr:TIBString3LoPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3lr:TIBString3LoPls1"/>
+            <rChild name="tibstring3lr:TIBString3LoPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring3lr:TIBString3LoPls1"/>
+            <rChild name="tibstring3lr:TIBString3LoPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3lr:TIBString3LoPls1"/>
+            <rChild name="tibstring3lr:TIBString3LoPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3lr:TIBString3LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3lr:TIBString3LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3lr:TIBString3LoPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3lr:TIBString3LoPls1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring3ul.xml b/examples/DDCMS/data/tibstring3ul.xml
new file mode 100644
index 0000000000000000000000000000000000000000..37334b4e37c32f68fb775f29193e30bd285647d1
--- /dev/null
+++ b/examples/DDCMS/data/tibstring3ul.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 4 EXT BW -->
+    <ConstantsSection label="tibstring3ul.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:BWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT4Sign]"/>
+        <Constant name="MotherCableL" value="55.99*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring3:StringUpMinL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-13.19*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="-531.792*mm"/>
+        <Constant name="Det1Z" value="-304.048*mm"/>
+        <Constant name="Det2Z" value="-76.0150*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring3ul.xml">
+        <Box name="TIBString3UpMinCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3UpMinModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3UpMinCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString3UpMinModAndCool">
+            <rSolid name="TIBString3UpMinModuleBox"/>
+            <rSolid name="TIBString3UpMinCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString3UpMin">
+            <rSolid name="TIBString3UpMinModAndCool"/>
+            <rSolid name="TIBString3UpMinCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString3UpMinCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString3UpMinCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString3UpMinCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring3ul.xml">
+        <LogicalPart name="TIBString3UpMin1" category="unspecified">
+            <rSolid name="TIBString3UpMin"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3UpMinCable" category="unspecified">
+            <rSolid name="TIBString3UpMinCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3UpMinCoolS" category="unspecified">
+            <rSolid name="TIBString3UpMinCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3UpMinCoolW" category="unspecified">
+            <rSolid name="TIBString3UpMinCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring3ul:TIBString3UpMin1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring3ul.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ul:TIBString3UpMin1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ul:TIBString3UpMin1"/>
+            <rChild name="tibstring3ul:TIBString3UpMinCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ul:TIBString3UpMin1"/>
+            <rChild name="tibstring3ul:TIBString3UpMinCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring3ul:TIBString3UpMin1"/>
+            <rChild name="tibstring3ul:TIBString3UpMinCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ul:TIBString3UpMin1"/>
+            <rChild name="tibstring3ul:TIBString3UpMinCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ul:TIBString3UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ul:TIBString3UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:180D, tibstringpar:180D, tibstringpar:180D</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ul:TIBString3UpMin1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ul:TIBString3UpMin1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstring3ur.xml b/examples/DDCMS/data/tibstring3ur.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5eff5d77e783fa2dfd134593b6186caa5be52805
--- /dev/null
+++ b/examples/DDCMS/data/tibstring3ur.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+    <!-- LAYER 4 EXT FW -->
+    <ConstantsSection label="tibstring3ur.xml" eval="true">
+        <Constant name="zero" value="0.0*fm"/>
+        <Constant name="FBSign" value="[tibstringpar:FWSign]"/>
+        <Constant name="IESign" value="[tibstringpar:EXT4Sign]"/>
+        <Constant name="MotherCableL" value="69.88*cm-2*[tibstringpar:MCHeadDz]"/>
+        <Constant name="ThisStringL" value="[tibstring3:StringUpPlsL]"/>
+        <Constant name="ThatStringL" value="[tibstringpar:StringL]-[ThisStringL]"/>
+        <Constant name="CoolL" value="0.5*[tibstringpar:StringL]-15.18*mm-2*[tibstringpar:CoolPipeDx]"/>
+        <Constant name="Det0Z" value="149.865*mm"/>
+        <Constant name="Det1Z" value="377.804*mm"/>
+        <Constant name="Det2Z" value="605.456*mm"/>
+        <Constant name="ShiftDet" value="-[FBSign]*0.5*[ThatStringL]+[IESign]*[tibmodpar:WaferZ]"/>
+        <Constant name="ShiftAOHLedge" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHLedgeModOffset])"/>
+        <Constant name="ShiftAOHBox" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibmodpar:AOHBoxDz])"/>
+        <Constant name="ShiftMCModConn" value="[ShiftDet]+[IESign]*([tibmodpar:ModuleDz]+[tibstringpar:MCModConnOffset])"/>
+        <Constant name="MCHeadZ" value="[FBSign]*(0.5*[ThisStringL]-[tibstringpar:MCHeadDz])"/>
+        <Constant name="MCZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[MotherCableL]-2*[tibstringpar:MCHeadDz])"/>
+        <Constant name="CoolSZ" value="[FBSign]*(0.5*[ThisStringL]-0.5*[CoolL])"/>
+        <Constant name="CoolWZ" value="[FBSign]*([ThisStringL]/2-[CoolL]-[tibstringpar:CoolPipeDx])"/>
+    </ConstantsSection>
+    <SolidSection label="tibstring3ur.xml">
+        <Box name="TIBString3UpPlsCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3UpPlsModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[ThisStringL]/2"/>
+        <Box name="TIBString3UpPlsCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[ThisStringL]/2"/>
+        <UnionSolid name="TIBString3UpPlsModAndCool">
+            <rSolid name="TIBString3UpPlsModuleBox"/>
+            <rSolid name="TIBString3UpPlsCoolBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <UnionSolid name="TIBString3UpPls">
+            <rSolid name="TIBString3UpPlsModAndCool"/>
+            <rSolid name="TIBString3UpPlsCableBox"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+        </UnionSolid>
+        <Box name="TIBString3UpPlsCable" dx="[tibstringpar:MotherCableW]/2" dy="[tibstringpar:MotherCableT]/2" dz="[MotherCableL]/2"/>
+        <Box name="TIBString3UpPlsCoolS" dx="[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[CoolL]/2"/>
+        <Box name="TIBString3UpPlsCoolW" dx="[tibstringpar:CoolPipeX]+[tibstringpar:CoolPipeDx]" dy="[tibstringpar:CoolPipeDy]" dz="[tibstringpar:CoolPipeDx]"/>
+    </SolidSection>
+    <LogicalPartSection label="tibstring3ur.xml">
+        <LogicalPart name="TIBString3UpPls1" category="unspecified">
+            <rSolid name="TIBString3UpPls"/>
+            <rMaterial name="materials:Air"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3UpPlsCable" category="unspecified">
+            <rSolid name="TIBString3UpPlsCable"/>
+            <rMaterial name="tibmaterial:TIB_MCable"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3UpPlsCoolS" category="unspecified">
+            <rSolid name="TIBString3UpPlsCoolS"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+        <LogicalPart name="TIBString3UpPlsCoolW" category="unspecified">
+            <rSolid name="TIBString3UpPlsCoolW"/>
+            <rMaterial name="tibmaterial:TIB_CoolPipe"/>
+        </LogicalPart>
+    </LogicalPartSection>
+    <Algorithm name="track:DDTrackerZPosAlgo">
+        <rParent name="tibstring3ur:TIBString3UpPls1"/>
+        <String name="ChildName" value="tibmodule2:TIBModule2"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <PosPartSection label="tibstring3ur.xml">
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ur:TIBString3UpPls1"/>
+            <rChild name="tibstringpar:MCHead"/>
+            <Translation x="[tibstringpar:MCHeadX]" y="[tibstringpar:SSMCHeadY]" z="[MCHeadZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ur:TIBString3UpPls1"/>
+            <rChild name="tibstring3ur:TIBString3UpPlsCable"/>
+            <Translation x="[tibstringpar:MotherCableX]" y="[tibstringpar:SSMotherCableY]" z="[MCZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ur:TIBString3UpPls1"/>
+            <rChild name="tibstring3ur:TIBString3UpPlsCoolS"/>
+            <Translation x="-[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="2">
+            <rParent name="tibstring3ur:TIBString3UpPls1"/>
+            <rChild name="tibstring3ur:TIBString3UpPlsCoolS"/>
+            <Translation x="[tibstringpar:CoolPipeX]" y="[tibstringpar:SSCoolPipeY]" z="[CoolSZ]"/>
+        </PosPart>
+        <PosPart copyNumber="1">
+            <rParent name="tibstring3ur:TIBString3UpPls1"/>
+            <rChild name="tibstring3ur:TIBString3UpPlsCoolW"/>
+            <Translation x="[zero]" y="[tibstringpar:SSCoolPipeY]" z="[CoolWZ]"/>
+        </PosPart>
+    </PosPartSection>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ur:TIBString3UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBModLedgeBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftDet]), ([Det1Z]+[ShiftDet]), ([Det2Z]+[ShiftDet]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ur:TIBString3UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBAOHLedge"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [zero], [zero], [zero]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY], [tibmodpar:SSLedgeBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHLedge]), ([Det1Z]+[ShiftAOHLedge]), ([Det2Z]+[ShiftAOHLedge]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ur:TIBString3UpPls1"/>
+        <String name="ChildName" value="tibmodpar:TIBSSAOHBox"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX], [tibmodpar:SSAOHBoxX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY], [tibmodpar:SSAOHBoxY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftAOHBox]), ([Det1Z]+[ShiftAOHBox]), ([Det2Z]+[ShiftAOHBox]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+    <Algorithm name="track:DDTrackerXYZPosAlgo">
+        <rParent name="tibstring3ur:TIBString3UpPls1"/>
+        <String name="ChildName" value="tibstringpar:SSMCModConn"/>
+        <Numeric name="StartCopyNo" value="1"/>
+        <Numeric name="IncrCopyNo" value="1"/>
+        <Vector name="XPositions" type="numeric" nEntries="3">
+            [tibstringpar:MCModConnX], [tibstringpar:MCModConnX], [tibstringpar:MCModConnX]</Vector>
+        <Vector name="YPositions" type="numeric" nEntries="3">
+            [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY], [tibstringpar:SSMCModConnY]</Vector>
+        <Vector name="ZPositions" type="numeric" nEntries="3">
+            ([Det0Z]+[ShiftMCModConn]), ([Det1Z]+[ShiftMCModConn]), ([Det2Z]+[ShiftMCModConn]) </Vector>
+        <Vector name="Rotations" type="string" nEntries="3">
+            tibstringpar:NULL, tibstringpar:NULL, tibstringpar:NULL</Vector>
+    </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibstringpar.xml b/examples/DDCMS/data/tibstringpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c073613fd33bb9d92550c17cf2a0bc6de2c315e
--- /dev/null
+++ b/examples/DDCMS/data/tibstringpar.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibstringpar.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="StringL" value="2*[tib:TIBDz]"/>
+		<Constant name="BWSign" value="-1."/>
+		<Constant name="FWSign" value="+1."/>
+		<Constant name="INT1Sign" value="-1."/>
+		<Constant name="EXT1Sign" value="+1."/>
+		<Constant name="INT2Sign" value="+1."/>
+		<Constant name="EXT2Sign" value="-1."/>
+		<Constant name="INT3Sign" value="-1."/>
+		<Constant name="EXT3Sign" value="+1."/>
+		<Constant name="INT4Sign" value="+1."/>
+		<Constant name="EXT4Sign" value="-1."/>
+		<Constant name="MCHeadDx" value="16.0*mm"/>
+		<Constant name="MCHeadDy" value="2.5*mm"/>
+		<Constant name="MCHeadDz" value="22.0*mm"/>
+		<Constant name="MCHeadX" value="[zero]"/>
+		<Constant name="SSMCHeadY" value="-[tibmodpar:SSModuleDy]-2*[tibstringpar:CoolBoxDy]-2*[tibstringpar:SSCableBoxDy]+[tibstringpar:MCHeadDy]"/>
+		<Constant name="DSMCHeadY" value="-[tibmodpar:DSModuleDy]-2*[tibstringpar:CoolBoxDy]-2*[tibstringpar:DSCableBoxDy]+[tibstringpar:MCHeadDy]"/>
+		<Constant name="MotherCableW" value="2.40*cm"/>
+		<Constant name="MotherCableT" value="1.20*mm"/>
+		<Constant name="MotherCableX" value="[zero]"/>
+		<Constant name="SSMotherCableY" value="-[tibmodpar:SSModuleDy]-2*[tibstringpar:CoolBoxDy]-2*[tibstringpar:SSCableBoxDy]+0.5*[tibstringpar:MotherCableT]"/>
+		<Constant name="DSMotherCableY" value="-[tibmodpar:DSModuleDy]-2*[tibstringpar:CoolBoxDy]-2*[tibstringpar:DSCableBoxDy]+0.5*[tibstringpar:MotherCableT]"/>
+		<Constant name="CoolTubeD" value="2.8*mm"/>
+		<!-- For bw comp to be removed -->
+		<Constant name="CoolPipeDx" value="2.25*mm"/>
+		<Constant name="CoolPipeDy" value="1.05*mm"/>
+		<Constant name="CoolPipeX" value="27.0*mm"/>
+		<Constant name="SSCoolPipeY" value="-[tibmodpar:SSModuleDy]-2*[tibstringpar:CoolBoxDy]+[tibstringpar:CoolPipeDy]"/>
+		<Constant name="DSCoolPipeY" value="-[tibmodpar:DSModuleDy]-2*[tibstringpar:CoolBoxDy]+[tibstringpar:CoolPipeDy]"/>
+		<Constant name="CoolTubeW" value="[CoolTubeD]+[CoolTubeSep]"/>
+		<!-- For bw comp to be removed -->
+		<Constant name="CoolBoxDx" value="30.0*mm"/>
+		<Constant name="CoolBoxDy" value="1.4*mm"/>
+		<Constant name="SSCoolBoxY" value="-[tibmodpar:SSModuleDy]-[tibstringpar:CoolBoxDy]"/>
+		<Constant name="DSCoolBoxY" value="-[tibmodpar:DSModuleDy]-[tibstringpar:CoolBoxDy]"/>
+		<Constant name="CoolTubeSep" value="5.40*cm"/>
+		<Constant name="CableBoxDx" value="16.0*mm"/>
+		<Constant name="SSCableBoxDy" value="2.3*mm"/>
+		<Constant name="SSCableBoxY" value="-[tibmodpar:SSModuleDy]-2*[tibstringpar:CoolBoxDy]-[tibstringpar:SSCableBoxDy]"/>
+		<Constant name="DSCableBoxDy" value="1.7*mm"/>
+		<Constant name="DSCableBoxY" value="-[tibmodpar:DSModuleDy]-2*[tibstringpar:CoolBoxDy]-[tibstringpar:DSCableBoxDy]"/>
+		<Constant name="SSMCModConnDx" value="6.9*mm"/>
+		<Constant name="DSMCModConnDx" value="7.4*mm"/>
+		<Constant name="SSMCModConnDy" value="0.5*([tibmodpar:SSAOHBoxY]-[tibmodpar:AOHBoxDy]-[tibstringpar:SSMotherCableY]-0.5*[tibstringpar:MotherCableT])"/>
+		<Constant name="DSMCModConnDy" value="0.5*([tibmodpar:DSAOHBoxY]-[tibmodpar:AOHBoxDy]-[tibstringpar:DSMotherCableY]-0.5*[tibstringpar:MotherCableT])"/>
+		<Constant name="SSMCModConnDz" value="5.7*mm"/>
+		<Constant name="DSMCModConnDz" value="9.7*mm"/>
+		<Constant name="MCModConnX" value="[zero]"/>
+		<Constant name="SSMCModConnY" value="-[tibmodpar:SSModuleDy]-2*[tibstringpar:CoolBoxDy]-2*[tibstringpar:SSCableBoxDy]+[tibstringpar:SSMCModConnDy]+[tibstringpar:MotherCableT]"/>
+		<Constant name="DSMCModConnY" value="-[tibmodpar:DSModuleDy]-2*[tibstringpar:CoolBoxDy]-2*[tibstringpar:DSCableBoxDy]+[tibstringpar:DSMCModConnDy]+[tibstringpar:MotherCableT]"/>
+		<Constant name="MCModConnOffset" value="[tibmodpar:AOHModOffset]+[tibmodpar:AOHLedgeSideDz]"/>
+		<Constant name="SideCutDx" value="[tibmodpar:DSModuleSideCutDx]"/>
+		<Constant name="SideCutX" value="[tibmodpar:ModuleDx]-[SideCutDx]+0.3*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tibstringpar.xml">
+		<Box name="TIBStringCoolBox" dx="[tibstringpar:CoolBoxDx]" dy="[tibstringpar:CoolBoxDy]" dz="[tibstringpar:StringL]/2"/>
+		<Box name="TIBSSStringModuleBox" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:SSModuleDy]" dz="[tibstringpar:StringL]/2"/>
+		<Box name="TIBSSStringCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:SSCableBoxDy]" dz="[tibstringpar:StringL]/2"/>
+		<UnionSolid name="TIBSSStringModAndCool">
+			<rSolid name="TIBSSStringModuleBox"/>
+			<rSolid name="TIBStringCoolBox"/>
+			<Translation x="[zero]" y="[tibstringpar:SSCoolBoxY]" z="[zero]"/>
+		</UnionSolid>
+		<UnionSolid name="TIBSSString1">
+			<rSolid name="TIBSSStringModAndCool"/>
+			<rSolid name="TIBSSStringCableBox"/>
+			<Translation x="[zero]" y="[tibstringpar:SSCableBoxY]" z="[zero]"/>
+		</UnionSolid>
+		<Box name="TIBDSString1MainPart" dx="[tibmodpar:ModuleDx]" dy="[tibmodpar:DSModuleDy]" dz="[tibstringpar:StringL]/2"/>
+		<Box name="TIBDSString1SideCut" dx="[SideCutDx]" dy="[tibmodpar:DSModuleSideCutDy]" dz="[tibstringpar:StringL]/2+[tibmodpar:SideCutExtraZ]"/>
+		<Box name="TIBDSStringCableBox" dx="[tibstringpar:CableBoxDx]" dy="[tibstringpar:DSCableBoxDy]" dz="[tibstringpar:StringL]/2"/>
+		<SubtractionSolid name="TIBDSString1LeftCutted">
+			<rSolid name="TIBDSString1MainPart"/>
+			<rSolid name="TIBDSString1SideCut"/>
+			<Translation x="-[SideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="[zero]"/>
+		</SubtractionSolid>
+		<SubtractionSolid name="TIBDSStringModuleBox">
+			<rSolid name="TIBDSString1LeftCutted"/>
+			<rSolid name="TIBDSString1SideCut"/>
+			<Translation x="[SideCutX]" y="[tibmodpar:DSModuleSideCutY]" z="[zero]"/>
+		</SubtractionSolid>
+		<UnionSolid name="TIBDSStringModAndCool">
+			<rSolid name="TIBDSStringModuleBox"/>
+			<rSolid name="TIBStringCoolBox"/>
+			<Translation x="[zero]" y="[tibstringpar:DSCoolBoxY]" z="[zero]"/>
+		</UnionSolid>
+		<UnionSolid name="TIBDSString1">
+			<rSolid name="TIBDSStringModAndCool"/>
+			<rSolid name="TIBDSStringCableBox"/>
+			<Translation x="[zero]" y="[tibstringpar:DSCableBoxY]" z="[zero]"/>
+		</UnionSolid>
+		<Box name="MCHead" dx="[tibstringpar:MCHeadDx]" dy="[tibstringpar:MCHeadDy]" dz="[tibstringpar:MCHeadDz]"/>
+		<Box name="SSMCModConn" dx="[tibstringpar:SSMCModConnDx]" dy="[tibstringpar:SSMCModConnDy]" dz="[tibstringpar:SSMCModConnDz]"/>
+		<Box name="DSMCModConn" dx="[tibstringpar:DSMCModConnDx]" dy="[tibstringpar:DSMCModConnDy]" dz="[tibstringpar:DSMCModConnDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tibstringpar.xml">
+		<LogicalPart name="MCHead" category="unspecified">
+			<rSolid name="MCHead"/>
+			<rMaterial name="tibmaterial:TIB_MCHead"/>
+		</LogicalPart>
+		<LogicalPart name="SSMCModConn" category="unspecified">
+			<rSolid name="SSMCModConn"/>
+			<rMaterial name="tibmaterial:TIB_SSMCModConn"/>
+		</LogicalPart>
+		<LogicalPart name="DSMCModConn" category="unspecified">
+			<rSolid name="DSMCModConn"/>
+			<rMaterial name="tibmaterial:TIB_DSMCModConn"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<RotationSection label="tibstringpar.xml">
+		<Rotation name="180D" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="90*deg" thetaZ="180*deg" phiZ="0*deg"/>
+		<Rotation name="90XD" thetaX="90*deg" phiX="90*deg" thetaY="0*deg" phiY="0*deg" thetaZ="90*deg" phiZ="0*deg"/>
+	</RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibtidcommonmaterial.xml b/examples/DDCMS/data/tibtidcommonmaterial.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e2033d46604af6d04fc00c280ac11fa24c54d21a
--- /dev/null
+++ b/examples/DDCMS/data/tibtidcommonmaterial.xml
@@ -0,0 +1,570 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <MaterialSection label="tibtidcommonmaterial.xml">
+    <CompositeMaterial name="TIBTID_CCUM" density="0.81143*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.19505">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.37418">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00724">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02789">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08519">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00067">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00469">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00322">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00067">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00808">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00556">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16432">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12324">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_FiberPigtail" density="1.08988*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.03793">
+        <rMaterial name="materials:Quartz" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0503">
+        <rMaterial name="materials:Acrylate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.50313">
+        <rMaterial name="materials:Acrylate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.40864">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_PigtailMUConn" density="1.09775*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.30468">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.56497">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13035">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_T_RuggRibbon" density="0.84212*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.67168">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13807">
+        <rMaterial name="trackermaterial:T_Kevlar" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06511">
+        <rMaterial name="materials:Acrylate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0538">
+        <rMaterial name="materials:Quartz" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07134">
+        <rMaterial name="materials:Acrylate" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_Cu10mmPipe" density="3.22429*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.5279">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.4721">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_Al6mmPipe" density="2.13004*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.3874">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.6126">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_MedCABMaleConn" density="1.65926*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.10693">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.37453">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11664">
+        <rMaterial name="materials:Tin" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25758">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14432">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_MedCABFemaleConn" density="1.89866*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.34829">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.28641">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10193">
+        <rMaterial name="materials:Tin" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20814">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05522">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_MedPLCCMaleConn" density="1.45510*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.13829">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.31405">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11316">
+        <rMaterial name="materials:Tin" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.28495">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14956">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_MedPLCCFemaleConn" density="1.75960*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.39851">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24109">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09357">
+        <rMaterial name="materials:Tin" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22177">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04505">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_MedusaWire" density="2.40567*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.70862">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29138">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_ServiceCylinder" density="0.52518*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.47614">
+        <rMaterial name="tibtidcommonmaterial:T_MedusaWire" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.21076">
+        <rMaterial name="tibtidcommonmaterial:T_Al6mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16286">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02128">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02601">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0604">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01334">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00686">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00231">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01469">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00536">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_ServiceDisk1" density="1.1412*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.26175">
+        <rMaterial name="tibtidcommonmaterial:T_MedusaWire" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10683">
+        <rMaterial name="tibtidcommonmaterial:T_Al6mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0895">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01171">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01429">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29722">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11443">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10428">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_ServiceDisk2" density="0.684*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.26175">
+        <rMaterial name="tibtidcommonmaterial:T_MedusaWire" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10683">
+        <rMaterial name="tibtidcommonmaterial:T_Al6mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0895">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01171">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01429">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29722">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11443">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10428">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_OptoPanelFront" density="0.077952*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.8808">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08973">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02947">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_OptoConnectors" density="0.530415*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.12072">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02314">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00586">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.43309">
+        <rMaterial name="trackermaterial:T_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.41719">
+        <rMaterial name="tibtidcommonmaterial:T_PigtailMUConn" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_OptoPanelBackInner" density="0.181308*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.19522">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.51268">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03886">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25324">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_OptoPanelBackOuter" density="0.159924*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.20963">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20893">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.58144">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_Margherita" density="1.2580195*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.25645">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02389">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00576">
+        <rMaterial name="materials:Gold" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02917">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00414">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0032">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00158">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00751">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00228">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13467">
+        <rMaterial name="tibtidcommonmaterial:T_MedCABMaleConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03841">
+        <rMaterial name="tibtidcommonmaterial:T_MedPLCCMaleConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.39282">
+        <rMaterial name="tibtidcommonmaterial:T_MedusaWire" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07999">
+        <rMaterial name="tibtidcommonmaterial:T_Al6mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02012">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_PowerConnectors" density="0.424932*g/cm3" method="mixture by weight"  symbol=" ">
+      <MaterialFraction fraction="0.1342">
+        <rMaterial name="trackermaterial:CAB_Al60TIBTID" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09401">
+        <rMaterial name="trackermaterial:MS_CntrlTIBTID" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05887">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.54781">
+        <rMaterial name="tibtidcommonmaterial:T_MedCABFemaleConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16511">
+        <rMaterial name="tibtidcommonmaterial:T_MedPLCCFemaleConn" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_TSTCabAxial" density="0.89492*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.31327">
+        <rMaterial name="trackermaterial:CAB_Al60TIBTID" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10473">
+        <rMaterial name="trackermaterial:MS_CntrlTIBTID" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25567">
+        <rMaterial name="tibtidcommonmaterial:T_Cu10mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0473">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00356">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.27547">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_TSTCabRadial" density="0.30422*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.41686">
+        <rMaterial name="trackermaterial:CAB_Al60TIBTID" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13941">
+        <rMaterial name="trackermaterial:MS_CntrlTIBTID" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.38651">
+        <rMaterial name="tibtidcommonmaterial:T_Cu10mmPipe" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05722">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_T_RuggRibbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_PA" density="2.74978*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.44428">
+        <rMaterial name="materials:Borosilicate_Glass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.48493">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07079">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_AOH" density="0.60091*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.31344">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.23771">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14423">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08645">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00612">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04437">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01304">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02075">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06154">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07235">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_DOH" density="0.79092*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.22923">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.18785">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04401">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02744">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00145">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01117">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01773">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02595">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03223">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07813">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07894">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.21661">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04926">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_AmphCable" density="2.05153*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.56777">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22996">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20227">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_HybridBoard" density="3.70257*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.26413">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03035">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05229">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.65323">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_HybridTails" density="1.61323*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.32847">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.34993">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.3216">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIBTID_Hybrid" density="2.16228*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.8733">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_HybridBoard" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07195">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00385">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00601">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00096">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00374">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00674">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00466">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00541">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01636">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00702">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+    </CompositeMaterial>
+  </MaterialSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibtidservices.xml b/examples/DDCMS/data/tibtidservices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a393af62d81838f2729605f910c9c8cf664ea256
--- /dev/null
+++ b/examples/DDCMS/data/tibtidservices.xml
@@ -0,0 +1,394 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibtidservices.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<!-- Mother Volume (Polycone) -->
+		<Constant name="Rin1" value="22.20*cm"/>
+		<Constant name="Rin1bis" value="21.80*cm"/>
+		<Constant name="Rin2" value="[tid:Rout]"/>
+		<!-- 52.0 cm -->
+		<Constant name="Rin3" value="24.60*cm"/>
+		<!-- "dente" PXL flange -->
+		<Constant name="Rin4" value="113.51*cm"/>
+		<!-- inner R (vs beam) corrected to 113.51 cm as in reality-->
+		<Constant name="Rout1" value="[tib:Rout]"/>
+		<!-- 54.0 cm -->
+		<Constant name="Rout2" value="58.00*cm"/>
+		<!-- "dente" Margerita flange -->
+		<Constant name="Rout3" value="116.00*cm"/>
+		<!-- outer R (vs TST)  [was 115.0 cm in tib.xml]; max value: 116.0 tob.xml -->
+		<Constant name="Zv1" value="71.6*cm"/>
+		<Constant name="Zv2" value="73.6*cm"/>
+		<!-- begin of TID envelope cf. tid.xml -->
+		<Constant name="Zv3" value="110.0*cm"/>
+		<!-- "dente" Margherita flange -->
+		<Constant name="Zv4" value="111.3*cm"/>
+		<Constant name="Zv5" value="112.1*cm"/>
+		<Constant name="Zv5bis" value="113.1*cm"/>
+		<!-- "dente" PXL flange -->
+		<Constant name="Zv6" value="118.0*cm"/>
+		<Constant name="Zv7" value="123.0*cm"/>
+		<Constant name="Zv8" value="282.0*cm"/>
+		<!-- current Z_max in .xml (true: 274.0 cm) -->
+		<!-- TIB flange -->
+		<Constant name="TIBFlangeL" value="[Zv2]-[Zv1]"/>
+		<Constant name="TIBFlangeZ" value="[Zv1]+[TIBFlangeL]/2"/>
+		<!-- PixelSupport flanges -->
+		<Constant name="PixelSupportFlangeL" value="[Zv5]-[Zv4]"/>
+		<Constant name="PixelSupportFlange2L" value="[Zv5bis]-[Zv5]"/>
+		<Constant name="PixelSupportFlangeZ" value="[Zv4]+[PixelSupportFlangeL]/2"/>
+		<Constant name="PixelSupportFlange2Z" value="[Zv4]+[PixelSupportFlangeL]+[PixelSupportFlange2L]/2"/>
+		<Constant name="Rin3bis" value="24.0*cm"/>
+		<!-- final section of TID support tube -->
+		<Constant name="TIDSupportL" value="4.9*cm"/>
+		<Constant name="TIDSupportZ" value="[Zv4]+[TIDSupportL]/2"/>
+		<!-- 113.75*cm -->
+		<!-- Power/Control connectors (medusa->CAB60) -->
+		<Constant name="PowerConnectorsRin" value="76.7*cm"/>
+		<Constant name="PowerConnectorsRout" value="95.0*cm"/>
+		<Constant name="PowerConnectorsL" value="3.0*cm"/>
+		<Constant name="PowerConnectorsZ" value="121.5*cm"/>
+		<!-- Margherita -->
+		<Constant name="MargheritaRf" value="60.6*cm"/>
+		<!-- "front" (lower |z|) -->
+		<Constant name="MargheritaRb" value="56.0*cm"/>
+		<!-- "back"  (higher |z|) -->
+		<Constant name="MargheritaZf" value="[Zv6]"/>
+		<Constant name="MargheritaZm" value="119.7*cm"/>
+		<Constant name="MargheritaZb" value="[Zv7]-[PowerConnectorsL]"/>
+		<!-- 120.0cm -->
+		<!-- Service Cylinder:   73.6< |z| <116.2 cm -->
+		<Constant name="ServiceCylinderL" value="42.6*cm"/>
+		<Constant name="ServiceCylinderZ" value="[Zv2]+[ServiceCylinderL]/2"/>
+		<!-- Service Disk -->
+		<Constant name="ServiceDiskZf" value="[Zv2]+[ServiceCylinderL]"/>
+		<Constant name="ServiceDiskZm" value="[Zv6]"/>
+		<Constant name="ServiceDiskZb" value="[MargheritaZm]"/>
+		<Constant name="ServiceDiskRin" value="[tid:SupportRin]"/>
+		<Constant name="ServiceDiskRm" value="58.0*cm"/>
+		<Constant name="ServiceDiskRout" value="[MargheritaRf]"/>
+                <Constant name="ServiceDisk2Dz" value="[ServiceDiskZb]/2-[ServiceDiskZf]/2"/>
+                <Constant name="ServiceDisk2Z" value="[ServiceDiskZb]/2+[ServiceDiskZf]/2"/>
+		<!-- Optical Panel -->
+		<Constant name="OpticalPanelZf" value="[Zv4]"/>
+		<Constant name="OpticalPanelZ1" value="[MargheritaZm]"/>
+		<Constant name="OpticalPanelZ2" value="[MargheritaZb]"/>
+		<Constant name="OpticalPanelZb" value="[Zv7]"/>
+		<Constant name="OptoPanelFrontL" value="3.6*cm"/>
+		<Constant name="OptoPanelFrontZ" value="[OpticalPanelZf]+[OptoPanelFrontL]/2"/>
+		<Constant name="OptoConnectorsL" value="5.0*cm"/>
+		<Constant name="OptoConnectorsZ" value="[OpticalPanelZf]+[OptoPanelFrontL]+[OptoConnectorsL]/2"/>
+		<Constant name="OptoPanelBackL" value="[OpticalPanelZb]-[OpticalPanelZf]-([OptoPanelFrontL]+[OptoConnectorsL])"/>
+		<Constant name="OptoPanelBackZ" value="[OpticalPanelZf]+[OptoPanelFrontL]+[OptoConnectorsL]+[OptoPanelBackL]/2"/>
+		<!-- TST -->
+		<Constant name="TSTCabContRin" value="95.0*cm"/>
+		<Constant name="TSTCabAxialR" value="115.3*cm"/>
+		<Constant name="TSTCabAxialT" value="1.1*cm"/>
+		<Constant name="TSTCabAxialL" value="142.0*cm"/>
+		<Constant name="TSTCabAxialZ" value="[Zv7]+[TSTCabAxialL]/2"/>
+		<Constant name="TSTCabAxialAlT" value="0.1*cm"/>
+		<!-- TEC Rails -->
+		<Constant name="TECRailsRin" value="[Rin4]"/>
+		<!-- directly ontop of the TEC Skin-->
+		<Constant name="TECRailsRout" value="[TSTCabAxialR]-[TSTCabAxialT]/2"/>
+		<!-- directly under AxialCables-->
+		<Constant name="TECRailsPhi" value="-0.664*deg"/>
+		<Constant name="TECRailsDeltaPhi" value="7.409*deg"/>
+		<Constant name="TECRailsADz" value="15.30*cm"/>
+		<Constant name="TECRailsAZ" value="160.25*cm"/>
+		<Constant name="TECRailsBDz" value="26.65*cm"/>
+		<Constant name="TECRailsBZ" value="250.10*cm"/>
+		<Constant name="TECRailsConnectorDz" value="1.25*cm"/>
+		<Constant name="TECRailsConnectorZDist" value="14.0*cm"/>
+		<Constant name="TECRailsConnectorZDistB1" value="20.5*cm"/>
+		<Constant name="TECRailsConnectorZDistB2" value="21.5*cm"/>
+		<Constant name="TECRailsConnectorZDistB3" value="8.74*cm"/>
+		<Constant name="TECRailsSupportDz" value="2.85*cm"/>
+		<Constant name="TECRailsSupportZDist" value="8.0*cm"/>
+		<Constant name="TECRailsSupportDphi" value="2.877*deg"/>
+	</ConstantsSection>
+	<SolidSection label="tibtidservices.xml">
+		<Polycone name="TIBTIDServices" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[Zv1]" rMin="[Rin1]" rMax="[Rout1]"/>
+			<ZSection z="[Zv2]" rMin="[Rin1]" rMax="[Rout1]"/>
+			<ZSection z="[Zv2]" rMin="[Rin2]" rMax="[Rout1]"/>
+			<ZSection z="[Zv3]" rMin="[Rin2]" rMax="[Rout1]"/>
+			<ZSection z="[Zv3]" rMin="[Rin2]" rMax="[Rout2]"/>
+			<ZSection z="[Zv4]" rMin="[Rin2]" rMax="[Rout2]"/>
+			<ZSection z="[Zv4]" rMin="[Rin1]" rMax="[Rout2]"/>
+			<ZSection z="[Zv5]" rMin="[Rin1]" rMax="[Rout2]"/>
+			<ZSection z="[Zv5]" rMin="[Rin1bis]" rMax="[Rout2]"/>
+			<ZSection z="[Zv5bis]" rMin="[Rin1bis]" rMax="[Rout2]"/>
+			<ZSection z="[Zv5bis]" rMin="[Rin3]" rMax="[Rout2]"/>
+			<ZSection z="[Zv6]" rMin="[Rin3]" rMax="[Rout2]"/>
+			<ZSection z="[Zv6]" rMin="[Rin3]" rMax="[Rout3]"/>
+			<ZSection z="[Zv7]" rMin="[Rin3]" rMax="[Rout3]"/>
+			<ZSection z="[Zv7]" rMin="[Rin4]" rMax="[Rout3]"/>
+			<ZSection z="[Zv8]" rMin="[Rin4]" rMax="[Rout3]"/>
+		</Polycone>
+		<!-- TID support tube not contained in tid.xml volume -->
+		<Tubs name="TIDSupport" rMin="[tid:SupportRin]" rMax="[tid:SupportRout]" dz="[TIDSupportL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIDSupportIn" rMin="[tid:SupportInRin]" rMax="[tid:SupportInRout]" dz="[TIDSupportL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- "Flangia" TIB -->
+		<Tubs name="TIBFlange" rMin="[tib:Rin]" rMax="[tib:Rout]" dz="[TIBFlangeL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- "Service Cylinder  -->
+		<Tubs name="ServiceCylinder" rMin="[Rin2]" rMax="[Rout1]" dz="[ServiceCylinderL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- Flanges PixelSupport -->
+		<Tubs name="PixelSupportFlange" rMin="[Rin1]" rMax="[Rin3]" dz="[PixelSupportFlangeL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="PixelSupportFlange2" rMin="[Rin1bis]" rMax="[Rin3bis]" dz="[PixelSupportFlange2L]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- Optical Panel  -->
+		<Polycone name="OpticalPanel" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[OpticalPanelZf]" rMin="[Rin3]" rMax="[tid:SupportRin]"/>
+			<ZSection z="[OpticalPanelZ1]" rMin="[Rin3]" rMax="[tid:SupportRin]"/>
+			<ZSection z="[OpticalPanelZ1]" rMin="[Rin3]" rMax="[MargheritaRb]"/>
+			<ZSection z="[OpticalPanelZ2]" rMin="[Rin3]" rMax="[MargheritaRb]"/>
+			<ZSection z="[OpticalPanelZ2]" rMin="[Rin3]" rMax="[PowerConnectorsRin]"/>
+			<ZSection z="[OpticalPanelZb]" rMin="[Rin3]" rMax="[PowerConnectorsRin]"/>
+		</Polycone>
+		<!-- Optical Panel Front  -->
+		<Tubs name="OptoPanelFront" rMin="[Rin3]" rMax="[tid:SupportRin]" dz="[OptoPanelFrontL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- Optical Connectors  -->
+		<Tubs name="OpticalConnectors" rMin="[Rin3]" rMax="[tid:SupportRin]" dz="[OptoConnectorsL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- Optical Panel Back  r<51.2 cm -->
+		<Tubs name="OptoPanelBackInner" rMin="[Rin3]" rMax="[tid:SupportRin]" dz="[OptoPanelBackL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- Optical Panel Back  r>51.2 cm -->
+		<Polycone name="OptoPanelBackOuter" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[OpticalPanelZ1]" rMin="[tid:SupportRin]" rMax="[MargheritaRb]"/>
+			<ZSection z="[OpticalPanelZ2]" rMin="[tid:SupportRin]" rMax="[MargheritaRb]"/>
+			<ZSection z="[OpticalPanelZ2]" rMin="[tid:SupportRin]" rMax="[PowerConnectorsRin]"/>
+			<ZSection z="[OpticalPanelZb]" rMin="[tid:SupportRin]" rMax="[PowerConnectorsRin]"/>
+		</Polycone>
+		<!-- "Margherita" Panel  -->
+		<Polycone name="Margherita" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[MargheritaZf]" rMin="[MargheritaRf]" rMax="[TSTCabContRin]"/>
+			<ZSection z="[MargheritaZm]" rMin="[MargheritaRf]" rMax="[TSTCabContRin]"/>
+			<ZSection z="[MargheritaZm]" rMin="[MargheritaRb]" rMax="[TSTCabContRin]"/>
+			<ZSection z="[MargheritaZb]" rMin="[MargheritaRb]" rMax="[TSTCabContRin]"/>
+		</Polycone>
+		<!-- Service Disk  -->
+                <Polycone name="ServiceDisk1" startPhi="0*deg" deltaPhi="360*deg">
+                        <ZSection z="[ServiceDiskZf]" rMin="[MargheritaRb]" rMax="[ServiceDiskRm]"/>
+                        <ZSection z="[ServiceDiskZm]" rMin="[MargheritaRb]" rMax="[ServiceDiskRm]"/>
+                        <ZSection z="[ServiceDiskZm]" rMin="[MargheritaRb]" rMax="[ServiceDiskRout]"/>
+                        <ZSection z="[ServiceDiskZb]" rMin="[MargheritaRb]" rMax="[ServiceDiskRout]"/>
+		</Polycone>
+                <Tubs name="ServiceDisk2" rMin="[ServiceDiskRin]" rMax="[MargheritaRb]" dz="[ServiceDisk2Dz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- Power/Control connectors  -->
+		<Tubs name="PowerConnectors" rMin="[PowerConnectorsRin]" rMax="[PowerConnectorsRout]" dz="[PowerConnectorsL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<!-- TST  -->
+		<Polycone name="TSTCabCont" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[Zv6]" rMin="[TSTCabContRin]" rMax="[Rout3]"/>
+			<ZSection z="[Zv7]" rMin="[TSTCabContRin]" rMax="[Rout3]"/>
+			<ZSection z="[Zv7]" rMin="[Rin4]" rMax="[Rout3]"/>
+			<ZSection z="[Zv8]" rMin="[Rin4]" rMax="[Rout3]"/>
+		</Polycone>
+		<Tubs name="TSTCabAxial" rMin="[TSTCabAxialR]-[TSTCabAxialT]/2" rMax="[TSTCabAxialR]+[TSTCabAxialT]/2" dz="[TSTCabAxialL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Polycone name="TSTCabRadial" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[Zv6]" rMin="[TSTCabContRin]" rMax="[TSTCabContRin]"/>
+			<ZSection z="[Zv6]+0.8*([Zv7]-[Zv6])" rMin="[TSTCabContRin]" rMax="[TSTCabAxialR]-[TSTCabAxialAlT]+[TSTCabAxialT]/2"/>
+			<ZSection z="[Zv7]" rMin="[TSTCabContRin]" rMax="[TSTCabAxialR]-[TSTCabAxialAlT]+[TSTCabAxialT]/2"/>
+		</Polycone>
+		<!-- TEC Rails -->
+		<Tubs name="TECRailsA" rMin="[TECRailsRin]" rMax="[TECRailsRout]" dz="[TECRailsADz]" startPhi="[TECRailsDeltaPhi]/2" deltaPhi="[TECRailsDeltaPhi]"/>
+		<Tubs name="TECRailsB" rMin="[TECRailsRin]" rMax="[TECRailsRout]" dz="[TECRailsBDz]" startPhi="[TECRailsDeltaPhi]/2" deltaPhi="[TECRailsDeltaPhi]"/>
+		<Tubs name="TECRailsConnector" rMin="[TECRailsRin]" rMax="[TECRailsRout]" dz="[TECRailsConnectorDz]" startPhi="[TECRailsDeltaPhi]/2" deltaPhi="[TECRailsDeltaPhi]"/>
+		<Tubs name="TECRailsSupport" rMin="[TECRailsRin]" rMax="[TECRailsRout]" dz="[TECRailsSupportDz]" startPhi="[TECRailsDeltaPhi]/2+[TECRailsSupportDphi]/4" deltaPhi="[TECRailsSupportDphi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tibtidservices.xml">
+		<LogicalPart name="TIDSupport" category="unspecified">
+			<rSolid name="TIDSupport"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIDSupportIn" category="unspecified">
+			<rSolid name="TIDSupportIn"/>
+			<rMaterial name="trackermaterial:T_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TIBFlange" category="unspecified">
+			<rSolid name="TIBFlange"/>
+			<rMaterial name="tibmaterial:TIB_Flange"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDServiceCylinder" category="unspecified">
+			<rSolid name="ServiceCylinder"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_ServiceCylinder"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDPxlFlange" category="unspecified">
+			<rSolid name="PixelSupportFlange"/>
+			<rMaterial name="trackermaterial:T_FR4"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDPxlFlange2" category="unspecified">
+			<rSolid name="PixelSupportFlange2"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDOpticalPanel" category="unspecified">
+			<rSolid name="OpticalPanel"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDOptoPanelFront" category="unspecified">
+			<rSolid name="OptoPanelFront"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_OptoPanelFront"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDOptoConnectors" category="unspecified">
+			<rSolid name="OpticalConnectors"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_OptoConnectors"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDOptoPanelBackInner" category="unspecified">
+			<rSolid name="OptoPanelBackInner"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_OptoPanelBackInner"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDOptoPanelBackOuter" category="unspecified">
+			<rSolid name="OptoPanelBackOuter"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_OptoPanelBackOuter"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDMargherita" category="unspecified">
+			<rSolid name="Margherita"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_Margherita"/>
+		</LogicalPart>
+                <LogicalPart name="TIBTIDServiceDisk1" category="unspecified">
+                        <rSolid name="ServiceDisk1"/>
+                        <rMaterial name="tibtidcommonmaterial:TIBTID_ServiceDisk1"/>
+                </LogicalPart>
+                <LogicalPart name="TIBTIDServiceDisk2" category="unspecified">
+                        <rSolid name="ServiceDisk2"/>
+                        <rMaterial name="tibtidcommonmaterial:TIBTID_ServiceDisk2"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDPowerConnectors" category="unspecified">
+			<rSolid name="PowerConnectors"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_PowerConnectors"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDTSTCabCont" category="unspecified">
+			<rSolid name="TSTCabCont"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDTSTCabAxial" category="unspecified">
+			<rSolid name="TSTCabAxial"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_TSTCabAxial"/>
+		</LogicalPart>
+		<LogicalPart name="TIBTIDTSTCabRadial" category="unspecified">
+			<rSolid name="TSTCabRadial"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_TSTCabRadial"/>
+		</LogicalPart>
+		<!-- TEC Rails -->
+		<LogicalPart name="TECRailsA" category="unspecified">
+			<rSolid name="tibtidservices:TECRailsA"/>
+			<rMaterial name="tecmaterial:TEC_Rails"/>
+		</LogicalPart>
+		<LogicalPart name="TECRailsB" category="unspecified">
+			<rSolid name="tibtidservices:TECRailsB"/>
+			<rMaterial name="tecmaterial:TEC_Rails"/>
+		</LogicalPart>
+		<LogicalPart name="TECRailsConnector" category="unspecified">
+			<rSolid name="tibtidservices:TECRailsConnector"/>
+			<rMaterial name="tecmaterial:TEC_RailsConnector"/>
+		</LogicalPart>
+		<LogicalPart name="TECRailsSupport" category="unspecified">
+			<rSolid name="tibtidservices:TECRailsSupport"/>
+			<rMaterial name="tecmaterial:TEC_RailsSupport"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tibtidservices.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIDSupport"/>
+			<rChild name="tibtidservices:TIDSupportIn"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIBTIDOpticalPanel"/>
+			<rChild name="tibtidservices:TIBTIDOptoPanelFront"/>
+			<Translation x="[zero]" y="[zero]" z="[OptoPanelFrontZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIBTIDOpticalPanel"/>
+			<rChild name="tibtidservices:TIBTIDOptoConnectors"/>
+			<Translation x="[zero]" y="[zero]" z="[OptoConnectorsZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIBTIDOpticalPanel"/>
+			<rChild name="tibtidservices:TIBTIDOptoPanelBackInner"/>
+			<Translation x="[zero]" y="[zero]" z="[OptoPanelBackZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIBTIDOpticalPanel"/>
+			<rChild name="tibtidservices:TIBTIDOptoPanelBackOuter"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIBTIDTSTCabCont"/>
+			<rChild name="tibtidservices:TIBTIDTSTCabAxial"/>
+			<Translation x="[zero]" y="[zero]" z="[TSTCabAxialZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TIBTIDTSTCabCont"/>
+			<rChild name="tibtidservices:TIBTIDTSTCabRadial"/>
+		</PosPart>
+		<!-- TEC Rails: Connectors -->
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TECRailsA"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="-[TECRailsConnectorZDist]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibtidservices:TECRailsA"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tibtidservices:TECRailsA"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="+[TECRailsConnectorZDist]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TECRailsB"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="(-[TECRailsConnectorZDistB3]-[TECRailsConnectorZDistB2]-[TECRailsConnectorZDistB1])/2"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tibtidservices:TECRailsB"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="(-[TECRailsConnectorZDistB3]-[TECRailsConnectorZDistB2]+[TECRailsConnectorZDistB1])/2"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tibtidservices:TECRailsB"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="(-[TECRailsConnectorZDistB3]+[TECRailsConnectorZDistB2]+[TECRailsConnectorZDistB1])/2"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="tibtidservices:TECRailsB"/>
+			<rChild name="tibtidservices:TECRailsConnector"/>
+			<Translation x="[zero]" y="[zero]" z="(+[TECRailsConnectorZDistB3]+[TECRailsConnectorZDistB2]+[TECRailsConnectorZDistB1])/2"/>
+		</PosPart>
+		<!-- TEC Rails: Support -->
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TECRailsA"/>
+			<rChild name="tibtidservices:TECRailsSupport"/>
+			<Translation x="[zero]" y="[zero]" z="[TECRailsSupportZDist]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservices:TECRailsB"/>
+			<rChild name="tibtidservices:TECRailsSupport"/>
+			<Translation x="[zero]" y="[zero]" z="[TECRailsSupportZDist]"/>
+		</PosPart>
+	</PosPartSection>
+	<!-- TEC Rails -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tibtidservices:TIBTIDTSTCabCont"/>
+		<String name="ChildName" value="tibtidservices:TECRailsA"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[TECRailsPhi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, [TECRailsAZ] </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tibtidservices:TIBTIDTSTCabCont"/>
+		<String name="ChildName" value="tibtidservices:TECRailsB"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[TECRailsPhi]"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			0, 0, [TECRailsBZ] </Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibtidservicesb.xml b/examples/DDCMS/data/tibtidservicesb.xml
new file mode 100644
index 0000000000000000000000000000000000000000..96d4029e4087eda63dc0d2e6982cc6cd7f98a8ce
--- /dev/null
+++ b/examples/DDCMS/data/tibtidservicesb.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibtidservicesb.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibtidservicesb.xml">
+		<LogicalPart name="TIBTIDServicesB" category="unspecified">
+			<rSolid name="tibtidservices:TIBTIDServices"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="servicescylinderb.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIDSupport"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:TIDSupportZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBFlange"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:TIBFlangeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDServiceCylinder"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:ServiceCylinderZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDPxlFlange"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:PixelSupportFlangeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDPxlFlange2"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:PixelSupportFlange2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDOpticalPanel"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDMargherita"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+                        <rChild name="tibtidservices:TIBTIDServiceDisk1"/>
+                </PosPart>
+                <PosPart copyNumber="1">
+                        <rParent name="tibtidservicesb:TIBTIDServicesB"/>
+                        <rChild name="tibtidservices:TIBTIDServiceDisk2"/>
+                        <Translation x="[zero]" y="[zero]" z="[tibtidservices:ServiceDisk2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDPowerConnectors"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:PowerConnectorsZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesb:TIBTIDServicesB"/>
+			<rChild name="tibtidservices:TIBTIDTSTCabCont"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tibtidservicesf.xml b/examples/DDCMS/data/tibtidservicesf.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c8c80d03d9d697447db10a4d451f7868143f5728
--- /dev/null
+++ b/examples/DDCMS/data/tibtidservicesf.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tibtidservicesf.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tibtidservicesf.xml">
+		<LogicalPart name="TIBTIDServicesF" category="unspecified">
+			<rSolid name="tibtidservices:TIBTIDServices"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="servicescylinderf.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIDSupport"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:TIDSupportZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBFlange"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:TIBFlangeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDServiceCylinder"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:ServiceCylinderZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDPxlFlange"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:PixelSupportFlangeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDPxlFlange2"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:PixelSupportFlange2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDOpticalPanel"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDMargherita"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+                        <rChild name="tibtidservices:TIBTIDServiceDisk1"/>
+                </PosPart>
+                <PosPart copyNumber="1">
+                        <rParent name="tibtidservicesf:TIBTIDServicesF"/>
+                        <rChild name="tibtidservices:TIBTIDServiceDisk2"/>
+                        <Translation x="[zero]" y="[zero]" z="[tibtidservices:ServiceDisk2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDPowerConnectors"/>
+			<Translation x="[zero]" y="[zero]" z="[tibtidservices:PowerConnectorsZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tibtidservicesf:TIBTIDServicesF"/>
+			<rChild name="tibtidservices:TIBTIDTSTCabCont"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tid.xml b/examples/DDCMS/data/tid.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14ea05749cfc9ae48ee56fc086182464cda2360e
--- /dev/null
+++ b/examples/DDCMS/data/tid.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tid.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rin" value="22.20*cm"/>
+		<Constant name="Rout" value="52.00*cm"/>
+		<Constant name="Zv1" value="73.6*cm"/>
+		<!-- begin of TID envelope  DO NOT TOUCH IT! -->
+		<Constant name="Zv2" value="111.3*cm"/>
+		<Constant name="WheelRin" value="22.38*cm"/>
+		<Constant name="WheelRout" value="51.20*cm"/>
+		<Constant name="WheelT" value="10.4*cm"/>
+		<!-- MAX ALLOWED VALUE 10.5 cm -->
+		<Constant name="WheelDZ0" value="5.5*cm"/>
+		<!-- Z off of Disk1 -->
+		<Constant name="WheelDZ" value="12.95*cm"/>
+		<!-- Z pitch of Disks -->
+		<Constant name="Wheel0Z" value="[Zv1]+[WheelDZ0]"/>
+		<Constant name="Wheel1Z" value="[Wheel0Z]+[WheelDZ]"/>
+		<Constant name="Wheel2Z" value="[Wheel1Z]+[WheelDZ]"/>
+		<Constant name="RingZ" value="3.50*cm"/>
+		<Constant name="SupportT" value="0.10*cm"/>
+		<Constant name="SupportRin" value="[WheelRout]"/>
+		<Constant name="SupportRout" value="52.00*cm"/>
+		<Constant name="SupportL" value="37.7*cm"/>
+		<!-- 37.2+0.5 ie [SideDiskT] included -->
+		<Constant name="SupportZ" value="[Zv1]+[SupportL]/2"/>
+		<Constant name="SupportInRin" value="[SupportRin]+[SupportT]"/>
+		<Constant name="SupportInRout" value="[SupportRout]-[SupportT]"/>
+		<Constant name="SideDiskRin" value="22.80*cm"/>
+		<Constant name="SideDiskT" value="0.50*cm"/>
+		<Constant name="SideDiskZ" value="[Zv1]+[SupportL]-[SideDiskT]/2"/>
+		<Constant name="SideDiskInT" value="0.50*cm"/>
+		<!-- "manine" -->
+		<Constant name="WheelFixDR" value="3.1*cm"/>
+		<Constant name="WheelFixRout" value="[tidringpar:Rout]"/>
+		<Constant name="WheelFixDZ" value="1.3*cm"/>
+		<!-- real value is 5,5 cm but set 1.3 cm to avoid overlaps -->
+		<Constant name="WheelFixDPhi" value="6.15*deg"/>
+		<Constant name="WheelFixTR" value="0.8*cm"/>
+		<Constant name="WheelFixTZ" value="0.4*cm"/>
+		<Constant name="WheelFixPhi" value="90.0*deg"/>
+	</ConstantsSection>
+	<SolidSection label="tid.xml">
+		<Polycone name="TID" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="[Zv1]" rMin="[Rin]" rMax="[Rout]"/>
+			<ZSection z="[Zv2]" rMin="[Rin]" rMax="[Rout]"/>
+		</Polycone>
+		<Tubs name="TIDWheel" rMin="[WheelRin]" rMax="[WheelRout]" dz="[WheelT]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIDSupport" rMin="[SupportRin]" rMax="[SupportRout]" dz="[SupportL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIDSupportIn" rMin="[SupportInRin]" rMax="[SupportInRout]" dz="[SupportL]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIDSideDisk" rMin="[SideDiskRin]" rMax="[WheelRout]" dz="[SideDiskT]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIDSideDiskIn" rMin="[SideDiskRin]" rMax="[WheelRout]" dz="[SideDiskInT]/2" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TIDWheelFix" rMin="[WheelFixRout]-[WheelFixDR]" rMax="[WheelFixRout]" dz="[WheelFixDZ]/2" startPhi="-[WheelFixDPhi]/2" deltaPhi="[WheelFixDPhi]"/>
+		<Tubs name="TIDWheelFixHole" rMin="[WheelFixRout]-[WheelFixDR]" rMax="[WheelFixRout]-[WheelFixTR]" dz="([WheelFixDZ]-[WheelFixTZ])/2" startPhi="-[WheelFixDPhi]/2" deltaPhi="[WheelFixDPhi]"/>
+		<SubtractionSolid name="TIDWheelFixCutted">
+			<rSolid name="TIDWheelFix"/>
+			<rSolid name="TIDWheelFixHole"/>
+			<Translation x="[zero]" y="[zero]" z="-[WheelFixTZ]/2"/>
+		</SubtractionSolid>
+	</SolidSection>
+	<LogicalPartSection label="tid.xml">
+		<LogicalPart name="TIDSupport" category="unspecified">
+			<rSolid name="TIDSupport"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIDSupportIn" category="unspecified">
+			<rSolid name="TIDSupportIn"/>
+			<rMaterial name="trackermaterial:T_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TIDSideDisk" category="unspecified">
+			<rSolid name="TIDSideDisk"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIDSideDiskIn" category="unspecified">
+			<rSolid name="TIDSideDiskIn"/>
+			<rMaterial name="trackermaterial:T_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TIDWheelFixCutted" category="unspecified">
+			<rSolid name="TIDWheelFixCutted"/>
+			<rMaterial name="tidmaterial:TID_WheelFixation"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tid.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tid:TIDSupport"/>
+			<rChild name="tid:TIDSupportIn"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tid:TIDSideDisk"/>
+			<rChild name="tid:TIDSideDiskIn"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidb.xml b/examples/DDCMS/data/tidb.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2d2bfbffb3374a0df84dae7073de9197902601be
--- /dev/null
+++ b/examples/DDCMS/data/tidb.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidb.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tidb.xml">
+		<LogicalPart name="TIDB" category="unspecified">
+			<rSolid name="tid:TID"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIDWheelB" category="unspecified">
+			<rSolid name="tid:TIDWheel"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidb.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidb:TIDB"/>
+			<rChild name="tidb:TIDWheelB"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:Wheel0Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidb:TIDB"/>
+			<rChild name="tidb:TIDWheelB"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:Wheel1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tidb:TIDB"/>
+			<rChild name="tidb:TIDWheelB"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:Wheel2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidb:TIDWheelB"/>
+			<rChild name="tidring0b:TIDRing0B"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidb:TIDWheelB"/>
+			<rChild name="tidring1b:TIDRing1B"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tidb:TIDWheelB"/>
+			<rChild name="tidring2:TIDRing2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tid:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidb:TIDB"/>
+			<rChild name="tid:TIDSupport"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:SupportZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidb:TIDB"/>
+			<rChild name="tid:TIDSideDisk"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:SideDiskZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<String name="ChildName" value="tid:TIDWheelFixCutted"/>
+		<Numeric name="N" value="3"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tid:WheelFixPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			[zero], [zero], -([tidringpar:StructureT]+[tid:WheelFixDZ])/2
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidf.xml b/examples/DDCMS/data/tidf.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f55447bf0ece4eccbde6a498f33d3674c1e3f17
--- /dev/null
+++ b/examples/DDCMS/data/tidf.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidf.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tidf.xml">
+		<LogicalPart name="TIDF" category="unspecified">
+			<rSolid name="tid:TID"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIDWheelF" category="unspecified">
+			<rSolid name="tid:TIDWheel"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidf.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidf:TIDF"/>
+			<rChild name="tidf:TIDWheelF"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:Wheel0Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidf:TIDF"/>
+			<rChild name="tidf:TIDWheelF"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:Wheel1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tidf:TIDF"/>
+			<rChild name="tidf:TIDWheelF"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:Wheel2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidf:TIDWheelF"/>
+			<rChild name="tidring0f:TIDRing0F"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidf:TIDWheelF"/>
+			<rChild name="tidring1f:TIDRing1F"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="tidf:TIDWheelF"/>
+			<rChild name="tidring2:TIDRing2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tid:RingZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidf:TIDF"/>
+			<rChild name="tid:TIDSupport"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:SupportZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidf:TIDF"/>
+			<rChild name="tid:TIDSideDisk"/>
+			<Translation x="[zero]" y="[zero]" z="[tid:SideDiskZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<String name="ChildName" value="tid:TIDWheelFixCutted"/>
+		<Numeric name="N" value="3"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[tid:WheelFixPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			[zero], [zero], -([tidringpar:StructureT]+[tid:WheelFixDZ])/2
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmaterial.xml b/examples/DDCMS/data/tidmaterial.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f318846ba05b1d76b653b05ae95d6357e29392ad
--- /dev/null
+++ b/examples/DDCMS/data/tidmaterial.xml
@@ -0,0 +1,340 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <MaterialSection label="tidmaterial.xml">
+    <CompositeMaterial name="TID_Mech" density="0.25139*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.11047">
+        <rMaterial name="trackermaterial:T_Nomex" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.83359">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02685">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02909">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_CoolPipe" density="2.17440*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.44661">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.55339">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_CoolManifold" density="2.20750*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.48924">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.51076">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_WheelFixation" density="4.95593*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.42707">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.57293">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_ICB1" density="2.21343*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.47891">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.43924">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00545">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03467">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02645">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00107">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00279">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0012">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00664">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00358">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_ICB2" density="2.18035*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.48128">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.44148">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0055">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03245">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02476">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00108">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00272">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00116">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00621">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00335">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_ICB3" density="2.83682*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.49183">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.45103">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00369">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02578">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01888">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00075">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00277">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00119">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00265">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00143">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_DOHM1" density="2.69687*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.6069">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12363">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00474">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07782">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04334">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00118">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00379">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00162">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00082">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0008">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09165">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_CCUM" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0169">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01248">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00259">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00078">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00192">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00526">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00044">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00332">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_DOHM2" density="2.43641*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.67179">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13681">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00337">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05528">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03079">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00084">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00269">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00115">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00058">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00057">
+        <rMaterial name="materials:Nickel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0651">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_CCUM" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.012">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00887">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00184">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00056">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00136">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00374">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00031">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00236">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_CoolInsert" density="5.46429*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="T_TIDModKaptonBox" density="1.25249*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.44711">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00555">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00844">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13306">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.33267">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03327">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0399">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_Spacer" density="2.98720*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.89555">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10445">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_SSAOHBox" density="0.74445*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.61394">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_AOH" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04738">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03257">
+        <rMaterial name="materials:T_Bronze" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05626">
+        <rMaterial name="trackermaterial:T_FR4" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03252">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_HybridTails" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02612">
+        <rMaterial name="tibtidcommonmaterial:TIBTID_HybridTails" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01776">
+        <rMaterial name="materials:Iron" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17345">
+        <rMaterial name="tidmaterial:TID_CoolPipe" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_DSAOHBox" density="0.74445*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1">
+        <rMaterial name="tidmaterial:TID_SSAOHBox" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_FiberLayer" density="1.13781*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.68491">
+        <rMaterial name="tibtidcommonmaterial:T_FiberPigtail" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.31509">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TID_ModuleFix" density="1.65714*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50611">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.49389">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+  </MaterialSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodpar.xml b/examples/DDCMS/data/tidmodpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3113c20ed859728d0f65fcc26541480ccceb76ba
--- /dev/null
+++ b/examples/DDCMS/data/tidmodpar.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidmodpar.xml" eval="true">
+		<Constant name="DetTilt" value="0.100*rad"/>
+		<Constant name="ModuleThickDS" value="0.710*cm"/>
+		<Constant name="ModuleThickSS" value="0.552*cm"/>
+		<Constant name="WaferThick" value="0.032*cm"/>
+		<Constant name="ActiveZDS" value="0.121*cm"/>
+		<Constant name="ActiveZSS" value="0*cm"/>
+		<Constant name="PitchThick" value="0.1130*cm"/>
+		<Constant name="PitchZDS" value="0.1315*cm"/>
+		<Constant name="PitchZSS" value="0.0105*cm"/>
+		<Constant name="HybridHeight" value="2.53*cm"/>
+		<Constant name="HybridWidth" value="4.70*cm"/>
+		<Constant name="HybridThick" value="[PitchThick]"/>
+		<Constant name="HybridZDS" value="[PitchZDS]"/>
+		<Constant name="HybridZSS" value="[PitchZSS]"/>
+		<Constant name="KaptonThick" value="0.030*cm"/>
+		<Constant name="KaptonZDS" value="0.090*cm"/>
+		<Constant name="KaptonZSS" value="-0.031*cm"/>
+		<Constant name="KaptonOver" value="0.400*cm"/>
+		<Constant name="BoxFrameWidth" value="7.70*cm"/>
+		<Constant name="BoxFrameHeightDS" value="1.95*cm"/>
+		<Constant name="BoxFrameHeightSS" value="[HybridHeight]"/>
+		<Constant name="BoxFrameThick" value="0.050*cm"/>
+		<Constant name="BoxFrameZDS" value="0.050*cm"/>
+		<Constant name="BoxFrameZSS" value="-0.071*cm"/>
+		<Constant name="SideFrameThick" value="[BoxFrameThick]"/>
+		<Constant name="SideFrameZDS" value="[BoxFrameZDS]"/>
+		<Constant name="SideFrameZSS" value="[BoxFrameZSS]"/>
+		<Constant name="SideFrameOver" value="0.200*cm"/>
+		<Constant name="BottomFrameOverDS" value="0.20*cm"/>
+		<Constant name="BottomFrameOverSS" value="0.15*cm"/>
+		<Constant name="TopFrameOverDS" value="0.15*cm"/>
+		<Constant name="TopFrameOverSS" value="0.20*cm"/>
+		<Constant name="PitchStereoTolerance" value="0.02*cm"/>
+		<!-- Cool Insert section -->
+		<Constant name="CoolInsertHeightSS" value="1.4*cm"/>
+		<Constant name="CoolInsertWidthSS" value="0.8*cm"/>
+		<Constant name="CoolInsertThickSS" value="0.18*cm"/>
+		<Constant name="CoolInsertZSS" value="[BoxFrameZSS]-0.5*([BoxFrameThick]+[CoolInsertThickSS])"/>
+		<Constant name="CoolInsertHeightDS" value="1.3*cm"/>
+		<Constant name="CoolInsertWidthDS" value="0.7*cm"/>
+		<Constant name="CoolInsertThickDS" value="0.25*cm"/>
+		<Constant name="CoolInsertZDS" value="-([KaptonZDS]+0.5*([KaptonThick]+[CoolInsertThickDS]))"/>
+		<!-- Spacers Section DS modules -->
+		<Constant name="BottomSpacersHeight" value="2.15*cm"/>
+		<Constant name="BottomSpacersWidth" value="7.70*cm"/>
+		<Constant name="BottomSpacersThick" value="0.050*cm"/>
+		<Constant name="BottomSpacersZ" value="[tid:zero]"/>
+		<Constant name="SideSpacersHeight" value="3.1*cm"/>
+		<Constant name="SideSpacersWidth" value="0.9*cm"/>
+		<!-- ~ 25% smaller then real ones -->
+		<Constant name="SideSpacersThick" value="[BottomSpacersThick]"/>
+		<Constant name="SideSpacersZ" value="[BottomSpacersZ]"/>
+	</ConstantsSection>
+	<SolidSection label="tidmodpar.xml">
+		<Box name="BottomSpacers" dx="[BottomSpacersWidth]/2" dy="[BottomSpacersThick]/2" dz="[BottomSpacersHeight]/2"/>
+		<Box name="SideSpacers" dx="[SideSpacersWidth]/2" dy="[SideSpacersThick]/2" dz="[SideSpacersHeight]/2"/>
+	</SolidSection>
+	<LogicalPartSection label="tidmodpar.xml">
+		<LogicalPart name="TIDBottomSpacers" category="unspecified">
+			<rSolid name="tidmodpar:BottomSpacers"/>
+			<rMaterial name="tidmaterial:TID_Spacer"/>
+		</LogicalPart>
+		<LogicalPart name="TIDSideSpacers" category="unspecified">
+			<rSolid name="tidmodpar:SideSpacers"/>
+			<rMaterial name="tidmaterial:TID_Spacer"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<RotationSection label="tidmodpar.xml">
+		<Rotation name="90ZD" thetaX="-90*deg" phiX="0*deg" thetaY="180*deg" phiY="0*deg" thetaZ="-90*deg" phiZ="90*deg"/>
+		<Rotation name="9NYX" thetaX="0*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="-90*deg" phiZ="0*deg"/>
+		<Rotation name="9PYX" thetaX="0*deg" phiX="0*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="90*deg" phiZ="0*deg"/>
+		<Rotation name="RFI1" thetaX="-90*deg" phiX="0*deg" thetaY="-90*deg" phiY="90*deg" thetaZ="0*deg" phiZ="0*deg"/>
+		<Rotation name="RFI2" thetaX="90*deg" phiX="0*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="180*deg" phiZ="0*deg"/>
+		<Rotation name="F100" thetaX="84.2704*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="5.7296*deg" phiZ="180*deg"/>
+		<Rotation name="G100" thetaX="-95.7296*deg" phiX="180*deg" thetaY="-90*deg" phiY="-90*deg" thetaZ="-5.7296*deg" phiZ="180*deg"/>
+		<Rotation name="R180" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="0*deg" phiZ="0*deg"/>
+	</RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule0.xml b/examples/DDCMS/data/tidmodule0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bf2657b019ed144c2ffebced6aa40b8fc1422ef0
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule0.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidmodule0.xml" eval="true">
+		<Constant name="FullHeight" value="11.2936000*cm"/>
+		<Constant name="ActiveHeight" value="11.0858000*cm"/>
+		<Constant name="DlTop" value="9.3754000*cm"/>
+		<Constant name="DlBottom" value="6.3588000*cm"/>
+		<Constant name="SideWidthTop" value="0.1082551*cm"/>
+		<Constant name="SideWidthBottom" value="0.0836793*cm"/>
+		<Constant name="DlHybrid" value="10.403*cm"/>
+		<Constant name="PitchHeight" value="1.30*cm"/>
+		<Constant name="BottomFrameHeight" value="0.70*cm"/>
+		<Constant name="TopFrameHeight" value="[PitchHeight]+[tidmodpar:TopFrameOverDS]+0.6*cm"/>
+		<Constant name="BoxFrameHeight" value="[tidmodpar:BoxFrameHeightDS]"/>
+		<Constant name="SideFrameWidth" value="1.35*cm"/>
+		<Constant name="CoolInsertShift" value="9.78*cm"/>
+		<Constant name="SideSpacersShift" value="[CoolInsertShift]"/>
+		<!-- alias for Module Height -->
+		<Constant name="ModuleHeight" value="[BoxFrameHeight]+[BottomFrameHeight]+[FullHeight]+[TopFrameHeight]-                                         [tidmodpar:TopFrameOverDS]-[tidmodpar:BottomFrameOverDS]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIDModuleAlgo">
+		<rParent name="tidmodule0l:TIDModule0L"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorNumber" value="2"/>
+		<Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+		<Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tidmodule0:FullHeight]"/>
+		<Numeric name="DlTop" value="[tidmodule0:DlTop]"/>
+		<Numeric name="DlBottom" value="[tidmodule0:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tidmodule0:DlHybrid]"/>
+		<String name="DoComponents" value="Yes"/>
+		<String name="BoxFrameName" value="tidmodule0:TIDModule0BoxFrame"/>
+		<String name="BoxFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+		<Numeric name="BoxFrameThick" value="[tidmodpar:BoxFrameThick]"/>
+		<Numeric name="BoxFrameHeight" value="[tidmodule0:BoxFrameHeight]"/>
+		<Numeric name="BottomFrameHeight" value="[tidmodule0:BottomFrameHeight]"/>
+		<Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+		<Numeric name="TopFrameHeight" value="[tidmodule0:TopFrameHeight]"/>
+		<Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+		<String name="SideFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="SideFrameWidth" value="[tidmodule0:SideFrameWidth]"/>
+		<Numeric name="SideFrameThick" value="[tidmodpar:SideFrameThick]"/>
+		<Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+		<Vector name="SideFrameName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiSideFrame,  tidmodule0:TIDModule0StereoSideFrame
+		</Vector>
+		<Vector name="HoleFrameName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiFrameHole,  tidmodule0:TIDModule0StereoFrameHole
+		</Vector>
+		<Vector name="HoleFrameRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<String name="KaptonMaterial" value="tidmaterial:T_TIDModKaptonBox"/>
+		<Numeric name="KaptonThick" value="[tidmodpar:KaptonThick]"/>
+		<Numeric name="KaptonOver" value="[tidmodpar:KaptonOver]"/>
+		<Vector name="KaptonName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiKapton,  tidmodule0:TIDModule0StereoKapton
+		</Vector>
+		<Vector name="HoleKaptonName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiKaptonHole,  tidmodule0:TIDModule0StereoKaptonHole
+		</Vector>
+		<Vector name="HoleKaptonRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<Vector name="WaferName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiWafer,  tidmodule0:TIDModule0StereoWafer
+		</Vector>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<Vector name="ActiveName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiActive, tidmodule0:TIDModule0StereoActive
+		</Vector>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tidmodule0:ActiveHeight]"/>
+		<Vector name="WaferThick" type="numeric" nEntries="2">
+			[tidmodpar:WaferThick],   [tidmodpar:WaferThick]
+		</Vector>
+		<String name="ActiveRotation" value="tidmodpar:90ZD"/>
+		<Vector name="BackPlaneThick" type="numeric" nEntries="2">
+			2*[tracker:BackPlaneDz], 2*[tracker:BackPlaneDz]
+		</Vector>
+		<String name="HybridName" value="tidmodule0:TIDModule0Hybrid"/>
+		<String name="HybridMaterial" value="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		<Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tidmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tidmodpar:HybridThick]"/>
+		<Vector name="PitchName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiPA,  tidmodule0:TIDModule0StereoPA
+		</Vector>
+		<String name="PitchMaterial" value="tibtidcommonmaterial:TIBTID_PA"/>
+		<Numeric name="PitchHeight" value="[tidmodule0:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tidmodpar:PitchThick]"/>
+		<Numeric name="PitchStereoTolerance" value="[tidmodpar:PitchStereoTolerance]"/>
+		<String name="CoolInsertName" value="tidmodule0:TIDCoolInsert"/>
+		<String name="CoolInsertMaterial" value="tidmaterial:TID_CoolInsert"/>
+		<Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+		<Numeric name="CoolInsertThick" value="[tidmodpar:CoolInsertThickDS]"/>
+		<Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+	</Algorithm>
+	<Algorithm name="track:DDTIDModuleAlgo">
+		<rParent name="tidmodule0r:TIDModule0R"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorNumber" value="2"/>
+		<Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+		<Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tidmodule0:FullHeight]"/>
+		<Numeric name="DlTop" value="[tidmodule0:DlTop]"/>
+		<Numeric name="DlBottom" value="[tidmodule0:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tidmodule0:DlHybrid]"/>
+		<String name="DoComponents" value="No"/>
+		<String name="BoxFrameName" value="tidmodule0:TIDModule0BoxFrame"/>
+		<String name="BoxFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+		<Numeric name="BoxFrameThick" value="[tidmodpar:BoxFrameThick]"/>
+		<Numeric name="BoxFrameHeight" value="[tidmodule0:BoxFrameHeight]"/>
+		<Numeric name="BottomFrameHeight" value="[tidmodule0:BottomFrameHeight]"/>
+		<Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+		<Numeric name="TopFrameHeight" value="[tidmodule0:TopFrameHeight]"/>
+		<Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+		<String name="SideFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="SideFrameWidth" value="[tidmodule0:SideFrameWidth]"/>
+		<Numeric name="SideFrameThick" value="[tidmodpar:SideFrameThick]"/>
+		<Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+		<Vector name="SideFrameName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiSideFrame,  tidmodule0:TIDModule0StereoSideFrame
+		</Vector>
+		<Vector name="HoleFrameName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiFrameHole,  tidmodule0:TIDModule0StereoFrameHole
+		</Vector>
+		<Vector name="HoleFrameRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<String name="KaptonMaterial" value="tidmaterial:T_TIDModKaptonBox"/>
+		<Numeric name="KaptonThick" value="[tidmodpar:KaptonThick]"/>
+		<Numeric name="KaptonOver" value="[tidmodpar:KaptonOver]"/>
+		<Vector name="KaptonName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiKapton,  tidmodule0:TIDModule0StereoKapton
+		</Vector>
+		<Vector name="HoleKaptonName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiKaptonHole,  tidmodule0:TIDModule0StereoKaptonHole
+		</Vector>
+		<Vector name="HoleKaptonRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<Vector name="WaferName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiWafer,  tidmodule0:TIDModule0StereoWafer
+		</Vector>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<Vector name="ActiveName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiActive, tidmodule0:TIDModule0StereoActive
+		</Vector>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tidmodule0:ActiveHeight]"/>
+		<Vector name="WaferThick" type="numeric" nEntries="2">
+			[tidmodpar:WaferThick],   [tidmodpar:WaferThick]
+		</Vector>
+		<String name="ActiveRotation" value="tidmodpar:90ZD"/>
+		<Vector name="BackPlaneThick" type="numeric" nEntries="2">
+			2*[tracker:BackPlaneDz], 2*[tracker:BackPlaneDz]
+		</Vector>
+		<String name="HybridName" value="tidmodule0:TIDModule0Hybrid"/>
+		<String name="HybridMaterial" value="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		<Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tidmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tidmodpar:HybridThick]"/>
+		<Vector name="PitchName" type="string" nEntries="2">
+			tidmodule0:TIDModule0RphiPA,  tidmodule0:TIDModule0StereoPA
+		</Vector>
+		<String name="PitchMaterial" value="tibtidcommonmaterial:TIBTID_PA"/>
+		<Numeric name="PitchHeight" value="[tidmodule0:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tidmodpar:PitchThick]"/>
+		<Numeric name="PitchStereoTolerance" value="[tidmodpar:PitchStereoTolerance]"/>
+		<String name="CoolInsertName" value="tidmodule0:TIDCoolInsert"/>
+		<String name="CoolInsertMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+		<Numeric name="CoolInsertThick" value="[tidmodpar:CoolInsertThickDS]"/>
+		<Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule0l.xml b/examples/DDCMS/data/tidmodule0l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ae3289fbe2bd01169f66e64af45ad3b39f1967f7
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule0l.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <Algorithm name="track:DDTIDModulePosAlgo">
+  <rParent name="tidmodule0l:TIDModule0L"/>
+  <Numeric name="DetectorNumber" value="2"/>
+  <Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+  <Numeric name="DetTilt" value="-[tidmodpar:DetTilt]"/>
+  <Numeric name="FullHeight" value="[tidmodule0:FullHeight]"/>
+  <Numeric name="DlTop" value="[tidmodule0:DlTop]"/>
+  <Numeric name="DlBottom" value="[tidmodule0:DlBottom]"/>
+  <Numeric name="DlHybrid" value="[tidmodule0:DlHybrid]"/>
+  <String name="BoxFrameName" value="tidmodule0:TIDModule0BoxFrame"/>
+  <Numeric name="BoxFrameHeight" value="[tidmodule0:BoxFrameHeight]"/>
+  <Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+  <Vector name="BoxFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:BoxFrameZDS],   -[tidmodpar:BoxFrameZDS] </Vector>
+  <Numeric name="BottomFrameHeight" value="[tidmodule0:BottomFrameHeight]"/>
+  <Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+  <Numeric name="TopFrameHeight" value="[tidmodule0:TopFrameHeight]"/>
+  <Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+  <Vector name="SideFrameName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiSideFrame,  tidmodule0:TIDModule0StereoSideFrame</Vector>
+  <Vector name="SideFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:SideFrameZDS],  -[tidmodpar:SideFrameZDS] </Vector>
+  <Vector name="SideFrameRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:NULL</Vector>
+  <Numeric name="SideFrameWidth" value="[tidmodule0:SideFrameWidth]"/>
+  <Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+  <Vector name="KaptonName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiKapton,  tidmodule0:TIDModule0StereoKapton</Vector>
+  <Vector name="KaptonZ" type="numeric" nEntries="2">
+   [tidmodpar:KaptonZDS],  -[tidmodpar:KaptonZDS] </Vector>
+  <Vector name="KaptonRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:NULL</Vector>
+  <Vector name="WaferName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiWafer,  tidmodule0:TIDModule0StereoWafer</Vector>
+  <Vector name="WaferZ" type="numeric" nEntries="2">
+   [tidmodpar:ActiveZDS],     -[tidmodpar:ActiveZDS] </Vector>
+  <Vector name="WaferRotation" type="string" nEntries="2">
+   tidmodpar:RFI1,  tidmodpar:F100</Vector>
+  <String name="HybridName" value="tidmodule0:TIDModule0Hybrid"/>
+  <Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+  <Vector name="HybridZ" type="numeric" nEntries="2">
+   [tidmodpar:HybridZDS],    -[tidmodpar:HybridZDS] </Vector>
+  <Vector name="PitchName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiPA,  tidmodule0:TIDModule0StereoPA</Vector>
+  <Numeric name="PitchHeight" value="[tidmodule0:PitchHeight]"/>
+  <Vector name="PitchZ" type="numeric" nEntries="2">
+   [tidmodpar:PitchZDS],     -[tidmodpar:PitchZDS] </Vector>
+  <Vector name="PitchRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:9PYX</Vector>
+  <String name="CoolInsertName" value="tidmodule0:TIDCoolInsert"/>
+  <Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+  <Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+  <Numeric name="CoolInsertZ" value="[tidmodpar:CoolInsertZDS]"/>
+  <Vector name="CoolInsertShift" type="numeric" nEntries="2">
+   [tid:zero],  [tidmodule0:CoolInsertShift]  </Vector>
+  <String name="DoSpacers" value="Yes"/>
+  <String name="BottomSpacersName" value="tidmodpar:TIDBottomSpacers"/>
+  <Numeric name="BottomSpacersHeight" value="[tidmodpar:BottomSpacersHeight]"/>
+  <Numeric name="BottomSpacersZ" value="[tidmodpar:BottomSpacersZ]"/>
+  <String name="SideSpacersName" value="tidmodpar:TIDSideSpacers"/>
+  <Numeric name="SideSpacersHeight" value="[tidmodpar:SideSpacersHeight]"/>
+  <Numeric name="SideSpacersZ" value="[tidmodpar:SideSpacersZ]"/>
+  <Numeric name="SideSpacersThick" value="[tidmodpar:SideSpacersThick]"/>
+  <Numeric name="SideSpacersWidth" value="[tidmodpar:SideSpacersWidth]"/>
+  <Numeric name="SideSpacersShift" value="[tidmodule0:SideSpacersShift]"/>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule0r.xml b/examples/DDCMS/data/tidmodule0r.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c37a38ff4779096019b80f7abcf60922d4666a9f
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule0r.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <Algorithm name="track:DDTIDModulePosAlgo">
+  <rParent name="tidmodule0r:TIDModule0R"/>
+  <Numeric name="DetectorNumber" value="2"/>
+  <Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+  <Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+  <Numeric name="FullHeight" value="[tidmodule0:FullHeight]"/>
+  <Numeric name="DlTop" value="[tidmodule0:DlTop]"/>
+  <Numeric name="DlBottom" value="[tidmodule0:DlBottom]"/>
+  <Numeric name="DlHybrid" value="[tidmodule0:DlHybrid]"/>
+  <String name="BoxFrameName" value="tidmodule0:TIDModule0BoxFrame"/>
+  <Numeric name="BoxFrameHeight" value="[tidmodule0:BoxFrameHeight]"/>
+  <Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+  <Vector name="BoxFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:BoxFrameZDS],   -[tidmodpar:BoxFrameZDS] </Vector>
+  <Numeric name="BottomFrameHeight" value="[tidmodule0:BottomFrameHeight]"/>
+  <Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+  <Numeric name="TopFrameHeight" value="[tidmodule0:TopFrameHeight]"/>
+  <Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+  <Vector name="SideFrameName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiSideFrame,  tidmodule0:TIDModule0StereoSideFrame</Vector>
+  <Vector name="SideFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:SideFrameZDS],  -[tidmodpar:SideFrameZDS] </Vector>
+  <Vector name="SideFrameRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:R180</Vector>
+  <Numeric name="SideFrameWidth" value="[tidmodule0:SideFrameWidth]"/>
+  <Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+  <Vector name="KaptonName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiKapton,  tidmodule0:TIDModule0StereoKapton</Vector>
+  <Vector name="KaptonZ" type="numeric" nEntries="2">
+   [tidmodpar:KaptonZDS],  -[tidmodpar:KaptonZDS] </Vector>
+  <Vector name="KaptonRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:R180</Vector>
+  <Vector name="WaferName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiWafer,  tidmodule0:TIDModule0StereoWafer</Vector>
+  <Vector name="WaferZ" type="numeric" nEntries="2">
+   [tidmodpar:ActiveZDS],     -[tidmodpar:ActiveZDS] </Vector>
+  <Vector name="WaferRotation" type="string" nEntries="2">
+   tidmodpar:RFI1,  tidmodpar:G100</Vector>
+  <String name="HybridName" value="tidmodule0:TIDModule0Hybrid"/>
+  <Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+  <Vector name="HybridZ" type="numeric" nEntries="2">
+   [tidmodpar:HybridZDS],    -[tidmodpar:HybridZDS] </Vector>
+  <Vector name="PitchName" type="string" nEntries="2">
+   tidmodule0:TIDModule0RphiPA,  tidmodule0:TIDModule0StereoPA</Vector>
+  <Numeric name="PitchHeight" value="[tidmodule0:PitchHeight]"/>
+  <Vector name="PitchZ" type="numeric" nEntries="2">
+   [tidmodpar:PitchZDS],     -[tidmodpar:PitchZDS] </Vector>
+  <Vector name="PitchRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:9NYX</Vector>
+  <String name="CoolInsertName" value="tidmodule0:TIDCoolInsert"/>
+  <Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+  <Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+  <Numeric name="CoolInsertZ" value="[tidmodpar:CoolInsertZDS]"/>
+  <Vector name="CoolInsertShift" type="numeric" nEntries="2">
+   [tid:zero],  [tidmodule0:CoolInsertShift]  </Vector>
+  <String name="DoSpacers" value="Yes"/>
+  <String name="BottomSpacersName" value="tidmodpar:TIDBottomSpacers"/>
+  <Numeric name="BottomSpacersHeight" value="[tidmodpar:BottomSpacersHeight]"/>
+  <Numeric name="BottomSpacersZ" value="[tidmodpar:BottomSpacersZ]"/>
+  <String name="SideSpacersName" value="tidmodpar:TIDSideSpacers"/>
+  <Numeric name="SideSpacersHeight" value="[tidmodpar:SideSpacersHeight]"/>
+  <Numeric name="SideSpacersZ" value="[tidmodpar:SideSpacersZ]"/>
+  <Numeric name="SideSpacersThick" value="[tidmodpar:SideSpacersThick]"/>
+  <Numeric name="SideSpacersWidth" value="[tidmodpar:SideSpacersWidth]"/>
+  <Numeric name="SideSpacersShift" value="[tidmodule0:SideSpacersShift]"/>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule1.xml b/examples/DDCMS/data/tidmodule1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c78deaff7d8af937ba75ee12a643a78da7f74615
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule1.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidmodule1.xml" eval="true">
+		<Constant name="FullHeight" value="9.0236000*cm"/>
+		<Constant name="ActiveHeight" value="8.8160000*cm"/>
+		<Constant name="DlTop" value="11.2202000*cm"/>
+		<Constant name="DlBottom" value="8.8096000*cm"/>
+		<Constant name="SideWidthTop" value="0.1076928*cm"/>
+		<Constant name="SideWidthBottom" value="0.0822066*cm"/>
+		<Constant name="DlHybrid" value="12.258*cm"/>
+		<Constant name="PitchHeight" value="1.40*cm"/>
+		<Constant name="BottomFrameHeight" value="0.85*cm"/>
+		<Constant name="TopFrameHeight" value="[PitchHeight]+[tidmodpar:TopFrameOverDS]+0.6*cm"/>
+		<Constant name="BoxFrameHeight" value="[tidmodpar:BoxFrameHeightDS]"/>
+		<Constant name="SideFrameWidth" value="1.30*cm"/>
+		<Constant name="CoolInsertShift" value="9.33*cm"/>
+		<Constant name="SideSpacersShift" value="[CoolInsertShift]"/>
+		<!-- alias for Module Height -->
+		<Constant name="ModuleHeight" value="[BoxFrameHeight]+[BottomFrameHeight]+[FullHeight]+[TopFrameHeight]-                                         [tidmodpar:TopFrameOverDS]-[tidmodpar:BottomFrameOverDS]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIDModuleAlgo">
+		<rParent name="tidmodule1l:TIDModule1L"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorNumber" value="2"/>
+		<Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+		<Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tidmodule1:FullHeight]"/>
+		<Numeric name="DlTop" value="[tidmodule1:DlTop]"/>
+		<Numeric name="DlBottom" value="[tidmodule1:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tidmodule1:DlHybrid]"/>
+		<String name="DoComponents" value="Yes"/>
+		<String name="BoxFrameName" value="tidmodule1:TIDModule1BoxFrame"/>
+		<String name="BoxFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+		<Numeric name="BoxFrameThick" value="[tidmodpar:BoxFrameThick]"/>
+		<Numeric name="BoxFrameHeight" value="[tidmodule1:BoxFrameHeight]"/>
+		<Numeric name="BottomFrameHeight" value="[tidmodule1:BottomFrameHeight]"/>
+		<Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+		<Numeric name="TopFrameHeight" value="[tidmodule1:TopFrameHeight]"/>
+		<Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+		<String name="SideFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="SideFrameWidth" value="[tidmodule1:SideFrameWidth]"/>
+		<Numeric name="SideFrameThick" value="[tidmodpar:SideFrameThick]"/>
+		<Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+		<Vector name="SideFrameName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiSideFrame,  tidmodule1:TIDModule1StereoSideFrame
+		</Vector>
+		<Vector name="HoleFrameName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiFrameHole,  tidmodule1:TIDModule1StereoFrameHole
+		</Vector>
+		<Vector name="HoleFrameRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<String name="KaptonMaterial" value="tidmaterial:T_TIDModKaptonBox"/>
+		<Numeric name="KaptonThick" value="[tidmodpar:KaptonThick]"/>
+		<Numeric name="KaptonOver" value="[tidmodpar:KaptonOver]"/>
+		<Vector name="KaptonName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiKapton,  tidmodule1:TIDModule1StereoKapton
+		</Vector>
+		<Vector name="HoleKaptonName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiKaptonHole,  tidmodule1:TIDModule1StereoKaptonHole
+		</Vector>
+		<Vector name="HoleKaptonRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<Vector name="WaferName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiWafer,  tidmodule1:TIDModule1StereoWafer
+		</Vector>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<Vector name="ActiveName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiActive, tidmodule1:TIDModule1StereoActive
+		</Vector>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tidmodule1:ActiveHeight]"/>
+		<Vector name="WaferThick" type="numeric" nEntries="2">
+			[tidmodpar:WaferThick],   [tidmodpar:WaferThick]
+		</Vector>
+		<String name="ActiveRotation" value="tidmodpar:90ZD"/>
+		<Vector name="BackPlaneThick" type="numeric" nEntries="2">
+			2*[tracker:BackPlaneDz], 2*[tracker:BackPlaneDz]
+		</Vector>
+		<String name="HybridName" value="tidmodule1:TIDModule1Hybrid"/>
+		<String name="HybridMaterial" value="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		<Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tidmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tidmodpar:HybridThick]"/>
+		<Vector name="PitchName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiPA,  tidmodule1:TIDModule1StereoPA
+		</Vector>
+		<String name="PitchMaterial" value="tibtidcommonmaterial:TIBTID_PA"/>
+		<Numeric name="PitchHeight" value="[tidmodule1:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tidmodpar:PitchThick]"/>
+		<Numeric name="PitchStereoTolerance" value="[tidmodpar:PitchStereoTolerance]"/>
+		<String name="CoolInsertName" value="tidmodule1:TIDCoolInsert"/>
+		<String name="CoolInsertMaterial" value="tidmaterial:TID_CoolInsert"/>
+		<Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+		<Numeric name="CoolInsertThick" value="[tidmodpar:CoolInsertThickDS]"/>
+		<Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+	</Algorithm>
+	<Algorithm name="track:DDTIDModuleAlgo">
+		<rParent name="tidmodule1r:TIDModule1R"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorNumber" value="2"/>
+		<Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+		<Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tidmodule1:FullHeight]"/>
+		<Numeric name="DlTop" value="[tidmodule1:DlTop]"/>
+		<Numeric name="DlBottom" value="[tidmodule1:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tidmodule1:DlHybrid]"/>
+		<String name="DoComponents" value="No"/>
+		<String name="BoxFrameName" value="tidmodule1:TIDModule1BoxFrame"/>
+		<String name="BoxFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+		<Numeric name="BoxFrameThick" value="[tidmodpar:BoxFrameThick]"/>
+		<Numeric name="BoxFrameHeight" value="[tidmodule1:BoxFrameHeight]"/>
+		<Numeric name="BottomFrameHeight" value="[tidmodule1:BottomFrameHeight]"/>
+		<Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+		<Numeric name="TopFrameHeight" value="[tidmodule1:TopFrameHeight]"/>
+		<Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+		<String name="SideFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="SideFrameWidth" value="[tidmodule1:SideFrameWidth]"/>
+		<Numeric name="SideFrameThick" value="[tidmodpar:SideFrameThick]"/>
+		<Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+		<Vector name="SideFrameName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiSideFrame,  tidmodule1:TIDModule1StereoSideFrame
+		</Vector>
+		<Vector name="HoleFrameName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiFrameHole,  tidmodule1:TIDModule1StereoFrameHole
+		</Vector>
+		<Vector name="HoleFrameRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<String name="KaptonMaterial" value="tidmaterial:T_TIDModKaptonBox"/>
+		<Numeric name="KaptonThick" value="[tidmodpar:KaptonThick]"/>
+		<Numeric name="KaptonOver" value="[tidmodpar:KaptonOver]"/>
+		<Vector name="KaptonName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiKapton,  tidmodule1:TIDModule1StereoKapton
+		</Vector>
+		<Vector name="HoleKaptonName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiKaptonHole,  tidmodule1:TIDModule1StereoKaptonHole
+		</Vector>
+		<Vector name="HoleKaptonRotation" type="string" nEntries="2">
+			tidmodpar:NULL, tidmodpar:F100
+		</Vector>
+		<Vector name="WaferName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiWafer,  tidmodule1:TIDModule1StereoWafer
+		</Vector>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<Vector name="ActiveName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiActive, tidmodule1:TIDModule1StereoActive
+		</Vector>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tidmodule1:ActiveHeight]"/>
+		<Vector name="WaferThick" type="numeric" nEntries="2">
+			[tidmodpar:WaferThick],   [tidmodpar:WaferThick]
+		</Vector>
+		<String name="ActiveRotation" value="tidmodpar:90ZD"/>
+		<Vector name="BackPlaneThick" type="numeric" nEntries="2">
+			2*[tracker:BackPlaneDz], 2*[tracker:BackPlaneDz]
+		</Vector>
+		<String name="HybridName" value="tidmodule1:TIDModule1Hybrid"/>
+		<String name="HybridMaterial" value="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		<Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tidmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tidmodpar:HybridThick]"/>
+		<Vector name="PitchName" type="string" nEntries="2">
+			tidmodule1:TIDModule1RphiPA,  tidmodule1:TIDModule1StereoPA
+		</Vector>
+		<String name="PitchMaterial" value="tibtidcommonmaterial:TIBTID_PA"/>
+		<Numeric name="PitchHeight" value="[tidmodule1:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tidmodpar:PitchThick]"/>
+		<Numeric name="PitchStereoTolerance" value="[tidmodpar:PitchStereoTolerance]"/>
+		<String name="CoolInsertName" value="tidmodule1:TIDCoolInsert"/>
+		<String name="CoolInsertMaterial" value="trackermaterial:T_Aluminium"/>
+		<Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+		<Numeric name="CoolInsertThick" value="[tidmodpar:CoolInsertThickDS]"/>
+		<Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule1l.xml b/examples/DDCMS/data/tidmodule1l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3f151debf8c736f5eadcc660adb326db2ee7da6
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule1l.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <Algorithm name="track:DDTIDModulePosAlgo">
+  <rParent name="tidmodule1l:TIDModule1L"/>
+  <Numeric name="DetectorNumber" value="2"/>
+  <Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+  <Numeric name="DetTilt" value="-[tidmodpar:DetTilt]"/>
+  <Numeric name="FullHeight" value="[tidmodule1:FullHeight]"/>
+  <Numeric name="DlTop" value="[tidmodule1:DlTop]"/>
+  <Numeric name="DlBottom" value="[tidmodule1:DlBottom]"/>
+  <Numeric name="DlHybrid" value="[tidmodule1:DlHybrid]"/>
+  <String name="BoxFrameName" value="tidmodule1:TIDModule1BoxFrame"/>
+  <Numeric name="BoxFrameHeight" value="[tidmodule1:BoxFrameHeight]"/>
+  <Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+  <Vector name="BoxFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:BoxFrameZDS],   -[tidmodpar:BoxFrameZDS] </Vector>
+  <Numeric name="BottomFrameHeight" value="[tidmodule1:BottomFrameHeight]"/>
+  <Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+  <Numeric name="TopFrameHeight" value="[tidmodule1:TopFrameHeight]"/>
+  <Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+  <Vector name="SideFrameName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiSideFrame,  tidmodule1:TIDModule1StereoSideFrame</Vector>
+  <Vector name="SideFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:SideFrameZDS],  -[tidmodpar:SideFrameZDS] </Vector>
+  <Vector name="SideFrameRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:NULL</Vector>
+  <Numeric name="SideFrameWidth" value="[tidmodule1:SideFrameWidth]"/>
+  <Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+  <Vector name="KaptonName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiKapton,  tidmodule1:TIDModule1StereoKapton</Vector>
+  <Vector name="KaptonZ" type="numeric" nEntries="2">
+   [tidmodpar:KaptonZDS],  -[tidmodpar:KaptonZDS] </Vector>
+  <Vector name="KaptonRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:NULL</Vector>
+  <Vector name="WaferName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiWafer,  tidmodule1:TIDModule1StereoWafer</Vector>
+  <Vector name="WaferZ" type="numeric" nEntries="2">
+   [tidmodpar:ActiveZDS],     -[tidmodpar:ActiveZDS] </Vector>
+  <Vector name="WaferRotation" type="string" nEntries="2">
+   tidmodpar:RFI1,  tidmodpar:F100</Vector>
+  <String name="HybridName" value="tidmodule1:TIDModule1Hybrid"/>
+  <Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+  <Vector name="HybridZ" type="numeric" nEntries="2">
+   [tidmodpar:HybridZDS],    -[tidmodpar:HybridZDS] </Vector>
+  <Vector name="PitchName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiPA,  tidmodule1:TIDModule1StereoPA</Vector>
+  <Numeric name="PitchHeight" value="[tidmodule1:PitchHeight]"/>
+  <Vector name="PitchZ" type="numeric" nEntries="2">
+   [tidmodpar:PitchZDS],     -[tidmodpar:PitchZDS] </Vector>
+  <Vector name="PitchRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:9PYX</Vector>
+  <String name="CoolInsertName" value="tidmodule1:TIDCoolInsert"/>
+  <Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+  <Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+  <Numeric name="CoolInsertZ" value="[tidmodpar:CoolInsertZDS]"/>
+  <Vector name="CoolInsertShift" type="numeric" nEntries="2">
+   [tid:zero],  [tidmodule1:CoolInsertShift]
+  </Vector>
+  <String name="DoSpacers" value="Yes"/>
+  <String name="BottomSpacersName" value="tidmodpar:TIDBottomSpacers"/>
+  <Numeric name="BottomSpacersHeight" value="[tidmodpar:BottomSpacersHeight]"/>
+  <Numeric name="BottomSpacersZ" value="[tidmodpar:BottomSpacersZ]"/>
+  <String name="SideSpacersName" value="tidmodpar:TIDSideSpacers"/>
+  <Numeric name="SideSpacersHeight" value="[tidmodpar:SideSpacersHeight]"/>
+  <Numeric name="SideSpacersZ" value="[tidmodpar:SideSpacersZ]"/>
+  <Numeric name="SideSpacersThick" value="[tidmodpar:SideSpacersThick]"/>
+  <Numeric name="SideSpacersWidth" value="[tidmodpar:SideSpacersWidth]"/>
+  <Numeric name="SideSpacersShift" value="[tidmodule1:SideSpacersShift]"/>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule1r.xml b/examples/DDCMS/data/tidmodule1r.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2d884bae45e27449af0d91c6dee0ab7bcb94d734
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule1r.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <Algorithm name="track:DDTIDModulePosAlgo">
+  <rParent name="tidmodule1r:TIDModule1R"/>
+  <Numeric name="DetectorNumber" value="2"/>
+  <Numeric name="ModuleThick" value="[tidmodpar:ModuleThickDS]"/>
+  <Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+  <Numeric name="FullHeight" value="[tidmodule1:FullHeight]"/>
+  <Numeric name="DlTop" value="[tidmodule1:DlTop]"/>
+  <Numeric name="DlBottom" value="[tidmodule1:DlBottom]"/>
+  <Numeric name="DlHybrid" value="[tidmodule1:DlHybrid]"/>
+  <String name="BoxFrameName" value="tidmodule1:TIDModule1BoxFrame"/>
+  <Numeric name="BoxFrameHeight" value="[tidmodule1:BoxFrameHeight]"/>
+  <Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+  <Vector name="BoxFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:BoxFrameZDS],   -[tidmodpar:BoxFrameZDS] </Vector>
+  <Numeric name="BottomFrameHeight" value="[tidmodule1:BottomFrameHeight]"/>
+  <Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverDS]"/>
+  <Numeric name="TopFrameHeight" value="[tidmodule1:TopFrameHeight]"/>
+  <Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverDS]"/>
+  <Vector name="SideFrameName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiSideFrame,  tidmodule1:TIDModule1StereoSideFrame</Vector>
+  <Vector name="SideFrameZ" type="numeric" nEntries="2">
+   [tidmodpar:SideFrameZDS],  -[tidmodpar:SideFrameZDS] </Vector>
+  <Vector name="SideFrameRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:R180</Vector>
+  <Numeric name="SideFrameWidth" value="[tidmodule1:SideFrameWidth]"/>
+  <Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+  <Vector name="KaptonName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiKapton,  tidmodule1:TIDModule1StereoKapton</Vector>
+  <Vector name="KaptonZ" type="numeric" nEntries="2">
+   [tidmodpar:KaptonZDS],  -[tidmodpar:KaptonZDS] </Vector>
+  <Vector name="KaptonRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:R180</Vector>
+  <Vector name="WaferName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiWafer,  tidmodule1:TIDModule1StereoWafer</Vector>
+  <Vector name="WaferZ" type="numeric" nEntries="2">
+   [tidmodpar:ActiveZDS],     -[tidmodpar:ActiveZDS] </Vector>
+  <Vector name="WaferRotation" type="string" nEntries="2">
+   tidmodpar:RFI1,  tidmodpar:G100</Vector>
+  <String name="HybridName" value="tidmodule1:TIDModule1Hybrid"/>
+  <Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+  <Vector name="HybridZ" type="numeric" nEntries="2">
+   [tidmodpar:HybridZDS],    -[tidmodpar:HybridZDS] </Vector>
+  <Vector name="PitchName" type="string" nEntries="2">
+   tidmodule1:TIDModule1RphiPA,  tidmodule1:TIDModule1StereoPA</Vector>
+  <Numeric name="PitchHeight" value="[tidmodule1:PitchHeight]"/>
+  <Vector name="PitchZ" type="numeric" nEntries="2">
+   [tidmodpar:PitchZDS],     -[tidmodpar:PitchZDS] </Vector>
+  <Vector name="PitchRotation" type="string" nEntries="2">
+   tidmodpar:NULL,  tidmodpar:9NYX</Vector>
+  <String name="CoolInsertName" value="tidmodule1:TIDCoolInsert"/>
+  <Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightDS]"/>
+  <Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthDS]"/>
+  <Numeric name="CoolInsertZ" value="[tidmodpar:CoolInsertZDS]"/>
+  <Vector name="CoolInsertShift" type="numeric" nEntries="2">
+   [tid:zero],  [tidmodule1:CoolInsertShift]
+  </Vector>
+  <String name="DoSpacers" value="Yes"/>
+  <String name="BottomSpacersName" value="tidmodpar:TIDBottomSpacers"/>
+  <Numeric name="BottomSpacersHeight" value="[tidmodpar:BottomSpacersHeight]"/>
+  <Numeric name="BottomSpacersZ" value="[tidmodpar:BottomSpacersZ]"/>
+  <String name="SideSpacersName" value="tidmodpar:TIDSideSpacers"/>
+  <Numeric name="SideSpacersHeight" value="[tidmodpar:SideSpacersHeight]"/>
+  <Numeric name="SideSpacersZ" value="[tidmodpar:SideSpacersZ]"/>
+  <Numeric name="SideSpacersThick" value="[tidmodpar:SideSpacersThick]"/>
+  <Numeric name="SideSpacersWidth" value="[tidmodpar:SideSpacersWidth]"/>
+  <Numeric name="SideSpacersShift" value="[tidmodule1:SideSpacersShift]"/>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidmodule2.xml b/examples/DDCMS/data/tidmodule2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d9d2ef9d0386e2cf4d26a58a879837bc41a79b8
--- /dev/null
+++ b/examples/DDCMS/data/tidmodule2.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidmodule2.xml" eval="true">
+		<Constant name="FullHeight" value="11.2736000*cm"/>
+		<Constant name="ActiveHeight" value="11.0660000*cm"/>
+		<Constant name="DlTop" value="8.3012000*cm"/>
+		<Constant name="DlBottom" value="6.4904000*cm"/>
+		<Constant name="SideWidthTop" value="0.1006846*cm"/>
+		<Constant name="SideWidthBottom" value="0.0866913*cm"/>
+		<Constant name="DlHybrid" value="5.887*cm"/>
+		<Constant name="PitchHeight" value="0.90*cm"/>
+		<Constant name="BottomFrameHeight" value="[PitchHeight]+[tidmodpar:BottomFrameOverSS]"/>
+		<Constant name="TopFrameHeight" value="[tidmodpar:TopFrameOverSS]+0.4*cm"/>
+		<Constant name="BoxFrameHeight" value="[tidmodpar:BoxFrameHeightSS]"/>
+		<Constant name="SideFrameWidth" value="1.10*cm"/>
+		<Constant name="CoolInsertShift" value="9.58*cm"/>
+		<Constant name="SideSpacersShift" value="[CoolInsertShift]"/>
+		<!-- alias for Module Height -->
+		<Constant name="ModuleHeight" value="[BoxFrameHeight]+[BottomFrameHeight]+[FullHeight]+[TopFrameHeight]-                                            [tidmodpar:TopFrameOverSS]-[tidmodpar:BottomFrameOverSS]"/>
+	</ConstantsSection>
+	<Algorithm name="track:DDTIDModuleAlgo">
+		<rParent name="tidmodule2:TIDModule2"/>
+		<String name="GeneralMaterial" value="materials:Air"/>
+		<Numeric name="DetectorNumber" value="1"/>
+		<Numeric name="ModuleThick" value="[tidmodpar:ModuleThickSS]"/>
+		<Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tidmodule2:FullHeight]"/>
+		<Numeric name="DlTop" value="[tidmodule2:DlTop]"/>
+		<Numeric name="DlBottom" value="[tidmodule2:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tidmodule2:DlHybrid]"/>
+		<String name="DoComponents" value="Yes"/>
+		<String name="BoxFrameName" value="tidmodule2:TIDModule2BoxFrame"/>
+		<String name="BoxFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+		<Numeric name="BoxFrameThick" value="[tidmodpar:BoxFrameThick]"/>
+		<Numeric name="BoxFrameHeight" value="[tidmodule2:BoxFrameHeight]"/>
+		<Numeric name="BottomFrameHeight" value="[tidmodule2:BottomFrameHeight]"/>
+		<Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverSS]"/>
+		<Numeric name="TopFrameHeight" value="[tidmodule2:TopFrameHeight]"/>
+		<Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverSS]"/>
+		<String name="SideFrameMaterial" value="trackermaterial:T_CarbonFibreStr"/>
+		<Numeric name="SideFrameWidth" value="[tidmodule2:SideFrameWidth]"/>
+		<Numeric name="SideFrameThick" value="[tidmodpar:SideFrameThick]"/>
+		<Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+		<Vector name="SideFrameName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiSideFrame
+		</Vector>
+		<Vector name="HoleFrameName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiFrameHole
+		</Vector>
+		<Vector name="HoleFrameRotation" type="string" nEntries="1">
+			tidmodpar:NULL
+		</Vector>
+		<String name="KaptonMaterial" value="tidmaterial:T_TIDModKaptonBox"/>
+		<Numeric name="KaptonThick" value="[tidmodpar:KaptonThick]"/>
+		<Numeric name="KaptonOver" value="[tidmodpar:KaptonOver]"/>
+		<Vector name="KaptonName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiKapton
+		</Vector>
+		<Vector name="HoleKaptonName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiKaptonHole
+		</Vector>
+		<Vector name="HoleKaptonRotation" type="string" nEntries="1">
+			tidmodpar:NULL
+		</Vector>
+		<Vector name="WaferName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiWafer
+		</Vector>
+		<String name="WaferMaterial" value="materials:Silicon"/>
+		<Numeric name="SideWidthTop" value="[SideWidthTop]"/>
+		<Numeric name="SideWidthBottom" value="[SideWidthBottom]"/>
+		<Vector name="ActiveName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiActive
+		</Vector>
+		<String name="ActiveMaterial" value="materials:Silicon"/>
+		<Numeric name="ActiveHeight" value="[tidmodule2:ActiveHeight]"/>
+		<Vector name="WaferThick" type="numeric" nEntries="1">
+			[tidmodpar:WaferThick]
+		</Vector>
+		<String name="ActiveRotation" value="tidmodpar:90ZD"/>
+		<Vector name="BackPlaneThick" type="numeric" nEntries="1">
+			2*[tracker:BackPlaneDz]
+		</Vector>
+		<String name="HybridName" value="tidmodule2:TIDModule2Hybrid"/>
+		<String name="HybridMaterial" value="tibtidcommonmaterial:TIBTID_Hybrid"/>
+		<Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+		<Numeric name="HybridWidth" value="[tidmodpar:HybridWidth]"/>
+		<Numeric name="HybridThick" value="[tidmodpar:HybridThick]"/>
+		<Vector name="PitchName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiPA
+		</Vector>
+		<String name="PitchMaterial" value="tibtidcommonmaterial:TIBTID_PA"/>
+		<Numeric name="PitchHeight" value="[tidmodule2:PitchHeight]"/>
+		<Numeric name="PitchThick" value="[tidmodpar:PitchThick]"/>
+		<Numeric name="PitchStereoTolerance" value="[tidmodpar:PitchStereoTolerance]"/>
+		<String name="CoolInsertName" value="tidmodule2:TIDCoolInsert"/>
+		<String name="CoolInsertMaterial" value="tidmaterial:TID_CoolInsert"/>
+		<Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightSS]"/>
+		<Numeric name="CoolInsertThick" value="[tidmodpar:CoolInsertThickSS]"/>
+		<Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthSS]"/>
+	</Algorithm>
+	<Algorithm name="track:DDTIDModulePosAlgo">
+		<rParent name="tidmodule2:TIDModule2"/>
+		<Numeric name="DetectorNumber" value="1"/>
+		<Numeric name="ModuleThick" value="[tidmodpar:ModuleThickSS]"/>
+		<Numeric name="DetTilt" value="[tidmodpar:DetTilt]"/>
+		<Numeric name="FullHeight" value="[tidmodule2:FullHeight]"/>
+		<Numeric name="DlTop" value="[tidmodule2:DlTop]"/>
+		<Numeric name="DlBottom" value="[tidmodule2:DlBottom]"/>
+		<Numeric name="DlHybrid" value="[tidmodule2:DlHybrid]"/>
+		<String name="BoxFrameName" value="tidmodule2:TIDModule2BoxFrame"/>
+		<Numeric name="BoxFrameHeight" value="[tidmodule2:BoxFrameHeight]"/>
+		<Numeric name="BoxFrameWidth" value="[tidmodpar:BoxFrameWidth]"/>
+		<Vector name="BoxFrameZ" type="numeric" nEntries="1">
+			[tidmodpar:BoxFrameZSS]
+		</Vector>
+		<Numeric name="BottomFrameHeight" value="[tidmodule2:BottomFrameHeight]"/>
+		<Numeric name="BottomFrameOver" value="[tidmodpar:BottomFrameOverSS]"/>
+		<Numeric name="TopFrameHeight" value="[tidmodule2:TopFrameHeight]"/>
+		<Numeric name="TopFrameOver" value="[tidmodpar:TopFrameOverSS]"/>
+		<Vector name="SideFrameName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiSideFrame
+		</Vector>
+		<Vector name="SideFrameZ" type="numeric" nEntries="1">
+			[tidmodpar:SideFrameZSS]
+		</Vector>
+		<Vector name="SideFrameRotation" type="string" nEntries="1">
+			tidmodpar:NULL
+		</Vector>
+		<Numeric name="SideFrameWidth" value="[tidmodule2:SideFrameWidth]"/>
+		<Numeric name="SideFrameOver" value="[tidmodpar:SideFrameOver]"/>
+		<Vector name="KaptonName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiKapton
+		</Vector>
+		<Vector name="KaptonZ" type="numeric" nEntries="1">
+			[tidmodpar:KaptonZSS]
+		</Vector>
+		<Vector name="KaptonRotation" type="string" nEntries="1">
+			tidmodpar:NULL
+		</Vector>
+		<Vector name="WaferName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiWafer
+		</Vector>
+		<Vector name="WaferZ" type="numeric" nEntries="1">
+			[tidmodpar:ActiveZSS]
+		</Vector>
+		<Vector name="WaferRotation" type="string" nEntries="1">
+			tidmodpar:RFI2
+		</Vector>
+		<String name="HybridName" value="tidmodule2:TIDModule2Hybrid"/>
+		<Numeric name="HybridHeight" value="[tidmodpar:HybridHeight]"/>
+		<Vector name="HybridZ" type="numeric" nEntries="1">
+			[tidmodpar:HybridZSS]
+		</Vector>
+		<Vector name="PitchName" type="string" nEntries="1">
+			tidmodule2:TIDModule2RphiPA
+		</Vector>
+		<Numeric name="PitchHeight" value="[tidmodule2:PitchHeight]"/>
+		<Vector name="PitchZ" type="numeric" nEntries="1">
+			[tidmodpar:PitchZSS]
+		</Vector>
+		<Vector name="PitchRotation" type="string" nEntries="1">
+			tidmodpar:NULL
+		</Vector>
+		<String name="CoolInsertName" value="tidmodule2:TIDCoolInsert"/>
+		<Numeric name="CoolInsertHeight" value="[tidmodpar:CoolInsertHeightSS]"/>
+		<Numeric name="CoolInsertWidth" value="[tidmodpar:CoolInsertWidthSS]"/>
+		<Numeric name="CoolInsertZ" value="[tidmodpar:CoolInsertZSS]"/>
+		<Vector name="CoolInsertShift" type="numeric" nEntries="2">
+			[tid:zero],  [tidmodule2:CoolInsertShift]</Vector>
+		<String name="DoSpacers" value="No"/>
+		<!-- everything below is dummy for SS -->
+		<String name="BottomSpacersName" value="tidmodpar:TIDBottomSpacers"/>
+		<Numeric name="BottomSpacersHeight" value="[tidmodpar:BottomSpacersHeight]"/>
+		<Numeric name="BottomSpacersZ" value="[tidmodpar:BottomSpacersZ]"/>
+		<String name="SideSpacersName" value="tidmodpar:TIDSideSpacers"/>
+		<Numeric name="SideSpacersHeight" value="[tidmodpar:SideSpacersHeight]"/>
+		<Numeric name="SideSpacersZ" value="[tidmodpar:SideSpacersZ]"/>
+		<Numeric name="SideSpacersThick" value="[tidmodpar:SideSpacersThick]"/>
+		<Numeric name="SideSpacersWidth" value="[tidmodpar:SideSpacersWidth]"/>
+		<Numeric name="SideSpacersShift" value="[tidmodule2:SideSpacersShift]"/>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring0.xml b/examples/DDCMS/data/tidring0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f42759f4b070cb2b21feceb1a9b8ad30f24324aa
--- /dev/null
+++ b/examples/DDCMS/data/tidring0.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring0.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rmin" value="22.5261*cm"/>
+		<Constant name="NPhi" value="24"/>
+		<Constant name="PhiOff" value="0*deg"/>
+		<Constant name="ICBR" value="40.250*cm"/>
+		<Constant name="ICBTailR" value="[ICBR]+[tidringpar:ICBW]/2"/>
+		<Constant name="RPos" value="[Rmin]+[tidmodule0:ModuleHeight]/2"/>
+		<Constant name="ICCRPos" value="[Rmin]+[tidmodule0:ModuleHeight]+[tidringpar:ICCROffset]+[tidringpar:ICCH]/2"/>
+		<Constant name="ICBTailW" value="([tidringpar:Rout]-[ICBTailR]-            [tidringpar:ICBTailTol])"/>
+		<Constant name="ICBTailRPos" value="([tidringpar:Rout]+[ICBTailR]-            [tidringpar:ICBTailTol])/2"/>
+		<Constant name="CCUMrPos" value="[ICBTailR]+2*[tidringpar:ICBTailTol]+[tidringpar:CCUMW]/2"/>
+		<Constant name="CoolR1" value="[Rmin]+[tidmodule0:ModuleHeight]-[tidmodule0:CoolInsertShift]"/>
+		<Constant name="CoolR2" value="[Rmin]+[tidmodule0:ModuleHeight]-[tidmodpar:CoolInsertHeightDS]+[tidringpar:CoolD]/2"/>
+		<Constant name="DOHMrIn" value="44.5*cm"/>
+		<Constant name="DOHMrOut" value="50.5*cm"/>
+		<Constant name="DOHMrOff" value="-0.5*cm"/>
+		<Constant name="DOHMdPhi" value="18*deg"/>
+		<Constant name="CoolManifoldL" value="17*cm"/>
+		<Constant name="FlatCablerIn" value="[ICBR]+[tidringpar:ICBW]/2"/>
+		<Constant name="FlatCablerOut" value="[FlatCablerIn]+6*cm"/>
+		<Constant name="FlatCabledPhi" value="30*deg"/>
+		<Constant name="FlatCablephiPos" value="21*deg"/>
+		<!-- palced symmetrically wrt the MC at 21 deg -->
+		<Constant name="FlatCablephiPosOff" value="3*deg"/>
+		<Constant name="FlatCablephiPosL" value="[FlatCablephiPos]-[FlatCablephiPosOff]-[FlatCabledPhi]/2"/>
+		<Constant name="FlatCablephiPosR" value="[FlatCablephiPos]+[FlatCablephiPosOff]+[FlatCabledPhi]/2"/>
+		<Constant name="ModuleFixationInsertsInR" value="28.8*cm"/>
+		<Constant name="ModuleFixationInsertsOutR" value="37.7*cm"/>
+	</ConstantsSection>
+	<SolidSection label="tidring0.xml">
+		<Tubs name="TIDRing0ICB" rMin="([ICBR]-[tidringpar:ICBW]/2)" rMax="([ICBR]+[tidringpar:ICBW]/2)" dz="[tidringpar:ICBT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDRing0ICBTail" dx="[tidringpar:ICBTailH]/2" dy="[ICBTailW]/2" dz="[tidringpar:ICBTailT]/2"/>
+		<Torus name="TIDRing0Cool1" innerRadius="[zero]" outerRadius="[tidringpar:CoolD]/2" torusRadius="[CoolR1]" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Torus name="TIDRing0Cool2" innerRadius="[zero]" outerRadius="[tidringpar:CoolD]/2" torusRadius="[CoolR2]" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TIDRing0DOHM" rMin="([DOHMrIn])" rMax="([DOHMrOut])" dz="[tidringpar:DOHMT]/2" startPhi="-[DOHMdPhi]/2" deltaPhi="[DOHMdPhi]"/>
+		<Tubs name="TIDRing0FiberLayer" rMin="([ICBR]-[tidringpar:ICBW]/2)" rMax="([ICBR]+[tidringpar:ICBW]/2)" dz="[tidringpar:FiberLayerT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDRing0CoolManifold" dx="[tidringpar:CoolManifoldW]/2" dy="[CoolManifoldL]/2" dz="[tidringpar:CoolManifoldT]/2"/>
+		<Tubs name="TIDRing0FlatCable" rMin="[FlatCablerIn]" rMax="[FlatCablerOut]" dz="[tidringpar:FlatCableT]/2" startPhi="-[FlatCabledPhi]/2" deltaPhi="[FlatCabledPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tidring0.xml">
+		<LogicalPart name="TIDStructure0" category="unspecified">
+			<rSolid name="tidringpar:TIDStructure"/>
+			<rMaterial name="tidmaterial:TID_Mech"/>
+		</LogicalPart>
+		<LogicalPart name="TIDICC0" category="unspecified">
+			<rSolid name="tidringpar:TIDICCDS"/>
+			<rMaterial name="tidmaterial:TID_DSAOHBox"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0ICBTail" category="unspecified">
+			<rSolid name="tidring0:TIDRing0ICBTail"/>
+			<rMaterial name="tidmaterial:TID_ICB1"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0ICB" category="unspecified">
+			<rSolid name="tidring0:TIDRing0ICB"/>
+			<rMaterial name="tidmaterial:TID_ICB1"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0DOHM" category="unspecified">
+			<rSolid name="tidring0:TIDRing0DOHM"/>
+			<rMaterial name="tidmaterial:TID_DOHM1"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0Cool1" category="unspecified">
+			<rSolid name="tidring0:TIDRing0Cool1"/>
+			<rMaterial name="tidmaterial:TID_CoolPipe"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0Cool2" category="unspecified">
+			<rSolid name="tidring0:TIDRing0Cool2"/>
+			<rMaterial name="tidmaterial:TID_CoolPipe"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0FiberLayer" category="unspecified">
+			<rSolid name="tidring0:TIDRing0FiberLayer"/>
+			<rMaterial name="tidmaterial:TID_FiberLayer"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0CoolManifold" category="unspecified">
+			<rSolid name="tidring0:TIDRing0CoolManifold"/>
+			<rMaterial name="tidmaterial:TID_CoolManifold"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing0FlatCable" category="unspecified">
+			<rSolid name="tidring0:TIDRing0FlatCable"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_AmphCable"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0:TIDStructure0"/>
+		<String name="ChildName" value="tidring0:TIDRing0CoolManifold"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="113*deg"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0 </Vector>
+	</Algorithm>
+	<!-- Inserts for module fixation  -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0:TIDStructure0"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="-9.90 *deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsInR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0:TIDStructure0"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="+9.90*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsInR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0:TIDStructure0"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="51"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="-5.04*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsOutR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring0:TIDStructure0"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="75"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="+5.04*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsOutR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring0b.xml b/examples/DDCMS/data/tidring0b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6b119b56ff7e8315ee5057b579a96f4e43bccaa6
--- /dev/null
+++ b/examples/DDCMS/data/tidring0b.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring0b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tidring0b.xml">
+		<LogicalPart name="TIDRing0B" category="unspecified">
+			<rSolid name="tidringpar:TIDRing"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidring0b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDStructure0"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0ICB"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0ICB"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0b:TIDRing0B"/>
+			<rChild name="tidring0:TIDRing0FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<String name="ChildName" value="tidring0:TIDRing0ICBTail"/>
+		<Numeric name="Radius" value="[tidring0:ICBTailRPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			165.0*deg,          60.0*deg,           24.0*deg,          21.0*deg,
+			345.0*deg,         240.0*deg,          204.0*deg,         201.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:ICBZ], [tidringpar:ICBZ],  [tidringpar:ICBZ], -[tidringpar:ICBZ],
+			-[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ],  [tidringpar:ICBZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<String name="ChildName" value="tidringpar:TIDCCUMBox"/>
+		<Numeric name="Radius" value="[tidring0:CCUMrPos]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			165.0*deg,          60.0*deg,           24.0*deg,          21.0*deg,
+			345.0*deg,         240.0*deg,          204.0*deg,         201.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ], [tidringpar:CCUMZ], -[tidringpar:CCUMZ],
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],-[tidringpar:CCUMZ],  [tidringpar:CCUMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<String name="ChildName" value="tidring0:TIDRing0DOHM"/>
+		<Numeric name="Radius" value="[tidring0:DOHMrOff]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			180.0*deg,          45.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			-[tidringpar:DOHMZ], [tidringpar:DOHMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<String name="ChildName" value="tidring0:TIDRing0FlatCable"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			[tidring0:FlatCablephiPosL],         [tidring0:FlatCablephiPosR],
+			[tidring0:FlatCablephiPosL]+180*deg, [tidring0:FlatCablephiPosR]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			-[tidringpar:FlatCableZ], -[tidringpar:FlatCableZ], 
+			[tidringpar:FlatCableZ],  [tidringpar:FlatCableZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTIDRingAlgo">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<Vector name="ModuleName" type="string" nEntries="2">
+			tidmodule0l:TIDModule0L, tidmodule0r:TIDModule0R</Vector>
+		<String name="ICCName" value="tidring0:TIDICC0"/>
+		<Numeric name="Number" value="[tidring0:NPhi]"/>
+		<Numeric name="StartAngle" value="[tidring0:PhiOff]"/>
+		<Numeric name="ModuleR" value="[tidring0:RPos]"/>
+		<Vector name="ModuleZ" type="numeric" nEntries="2">
+			-[tidringpar:ModuleZDS],    [tidringpar:ModuleZDS]   </Vector>
+		<Numeric name="ICCR" value="[tidring0:ICCRPos]"/>
+		<Numeric name="ICCShift" value="[zero]"/>
+		<Vector name="ICCZ" type="numeric" nEntries="2">
+			-[tidringpar:ICCZ],         [tidringpar:ICCZ]        </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0b:TIDRing0B"/>
+		<String name="ChildName" value="tidringpar:TIDManifoldFix"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			113.0*deg,         113.0*deg,          293.0*deg,         293.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			[tidringpar:ManifoldFixZ], -[tidringpar:ManifoldFixZ],
+			[tidringpar:ManifoldFixZ], -[tidringpar:ManifoldFixZ]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring0f.xml b/examples/DDCMS/data/tidring0f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..72798fd8e1c5d1dc365ad2ba5a0983c59b6d0d14
--- /dev/null
+++ b/examples/DDCMS/data/tidring0f.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring0f.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tidring0f.xml">
+		<LogicalPart name="TIDRing0F" category="unspecified">
+			<rSolid name="tidringpar:TIDRing"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidring0f.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDStructure0"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0ICB"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0ICB"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring0f:TIDRing0F"/>
+			<rChild name="tidring0:TIDRing0FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<String name="ChildName" value="tidring0:TIDRing0ICBTail"/>
+		<Numeric name="Radius" value="[tidring0:ICBTailRPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			165.0*deg,          60.0*deg,           24.0*deg,          21.0*deg,
+			345.0*deg,         240.0*deg,          204.0*deg,         201.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:ICBZ], [tidringpar:ICBZ],  [tidringpar:ICBZ], -[tidringpar:ICBZ],
+			-[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ],  [tidringpar:ICBZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<String name="ChildName" value="tidringpar:TIDCCUMBox"/>
+		<Numeric name="Radius" value="[tidring0:CCUMrPos]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			165.0*deg,          60.0*deg,           24.0*deg,          21.0*deg,
+			345.0*deg,         240.0*deg,          204.0*deg,         201.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ], [tidringpar:CCUMZ], -[tidringpar:CCUMZ],
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],-[tidringpar:CCUMZ],  [tidringpar:CCUMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<String name="ChildName" value="tidring0:TIDRing0DOHM"/>
+		<Numeric name="Radius" value="[tidring0:DOHMrOff]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			180.0*deg,          45.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			-[tidringpar:DOHMZ], [tidringpar:DOHMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<String name="ChildName" value="tidring0:TIDRing0FlatCable"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			[tidring0:FlatCablephiPosL],         [tidring0:FlatCablephiPosR],
+			[tidring0:FlatCablephiPosL]+180*deg, [tidring0:FlatCablephiPosR]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			-[tidringpar:FlatCableZ], -[tidringpar:FlatCableZ], 
+			[tidringpar:FlatCableZ],  [tidringpar:FlatCableZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTIDRingAlgo">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<Vector name="ModuleName" type="string" nEntries="2">
+			tidmodule0l:TIDModule0L, tidmodule0r:TIDModule0R</Vector>
+		<String name="ICCName" value="tidring0:TIDICC0"/>
+		<Numeric name="Number" value="[tidring0:NPhi]"/>
+		<Numeric name="StartAngle" value="[tidring0:PhiOff]"/>
+		<Numeric name="ModuleR" value="[tidring0:RPos]"/>
+		<Vector name="ModuleZ" type="numeric" nEntries="2">
+			-[tidringpar:ModuleZDS],    [tidringpar:ModuleZDS]   </Vector>
+		<Numeric name="ICCR" value="[tidring0:ICCRPos]"/>
+		<Numeric name="ICCShift" value="[zero]"/>
+		<Vector name="ICCZ" type="numeric" nEntries="2">
+			-[tidringpar:ICCZ],         [tidringpar:ICCZ]        </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring0f:TIDRing0F"/>
+		<String name="ChildName" value="tidringpar:TIDManifoldFix"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			113.0*deg,         113.0*deg,          293.0*deg,         293.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			[tidringpar:ManifoldFixZ], -[tidringpar:ManifoldFixZ],
+			[tidringpar:ManifoldFixZ], -[tidringpar:ManifoldFixZ]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring1.xml b/examples/DDCMS/data/tidring1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..beaa0f5f538602860799e1e164bf15aafe3b131f
--- /dev/null
+++ b/examples/DDCMS/data/tidring1.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring1.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rmin" value="31.5462*cm"/>
+		<Constant name="NPhi" value="24"/>
+		<Constant name="PhiOff" value="0*deg"/>
+		<Constant name="ICBR" value="47.250*cm"/>
+		<Constant name="ICBTailR" value="[ICBR]+[tidringpar:ICBW]/2"/>
+		<Constant name="ICBTailH" value="8.6*cm"/>
+		<Constant name="RPos" value="[Rmin]+[tidmodule1:ModuleHeight]/2"/>
+		<Constant name="ICCRPos" value="[Rmin]+[tidmodule1:ModuleHeight]+[tidringpar:ICCROffset]+[tidringpar:ICCH]/2"/>
+		<Constant name="ICBTailW" value="([tidringpar:Rout]-[ICBTailR]-            4*[tidringpar:ICBTailTol])"/>
+		<Constant name="ICBTailRPos" value="([tidringpar:Rout]+[ICBTailR]-            4*[tidringpar:ICBTailTol])/2"/>
+		<Constant name="CCUMrPos" value="[tidringpar:Rout]-[tidringpar:CCUMH]/2-2*[tidringpar:ICBTailTol]"/>
+		<Constant name="CoolR1" value="[Rmin]+[tidmodule1:ModuleHeight]-[tidmodule1:CoolInsertShift]"/>
+		<Constant name="CoolR2" value="[Rmin]+[tidmodule1:ModuleHeight]-[tidmodpar:CoolInsertHeightDS]+[tidringpar:CoolD]/2"/>
+		<Constant name="DOHMrIn" value="44.5*cm"/>
+		<Constant name="DOHMrOut" value="50.5*cm"/>
+		<Constant name="DOHMrOff" value="-20.5*cm"/>
+		<Constant name="DOHMdPhi" value="18*deg"/>
+		<Constant name="DOHMphiPos" value="52.5*deg"/>
+		<Constant name="CoolManifoldL" value="14*cm"/>
+		<Constant name="FlatCablerIn" value="[tidringpar:Rin]"/>
+		<Constant name="FlatCablerOut" value="[FlatCablerIn]+22.5*cm"/>
+		<Constant name="FlatCabledPhi" value="90*deg"/>
+		<Constant name="FlatCableHolerIn" value="[tidringpar:Rin]+2.4*cm"/>
+		<Constant name="FlatCableHolerOut" value="[FlatCablerOut]"/>
+		<Constant name="FlatCableHoledPhi" value="84*deg"/>
+		<Constant name="FlatCablephiPosF" value="[DOHMphiPos]+[DOHMdPhi]+[FlatCabledPhi]/2"/>
+		<!-- tuned by eye -->
+		<Constant name="FlatCablephiPosB" value="[DOHMphiPos]-[DOHMdPhi]-[FlatCabledPhi]/2"/>
+		<!-- tuned by eye -->
+		<Constant name="ModuleFixationInsertsInR" value="36.4*cm"/>
+		<Constant name="ModuleFixationInsertsOutR" value="44.7*cm"/>
+	</ConstantsSection>
+	<SolidSection label="tidring1.xml">
+		<Tubs name="TIDRing1ICB" rMin="([ICBR]-[tidringpar:ICBW]/2)" rMax="([ICBR]+[tidringpar:ICBW]/2)" dz="[tidringpar:ICBT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDRing1ICBTail" dx="[ICBTailH]/2" dy="[ICBTailW]/2" dz="[tidringpar:ICBTailT]/2"/>
+		<Torus name="TIDRing1Cool1" innerRadius="[zero]" outerRadius="[tidringpar:CoolD]/2" torusRadius="[CoolR1]" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Torus name="TIDRing1Cool2" innerRadius="[zero]" outerRadius="[tidringpar:CoolD]/2" torusRadius="[CoolR2]" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TIDRing1DOHM" rMin="([DOHMrIn])" rMax="([DOHMrOut])" dz="[tidringpar:DOHMT]/2" startPhi="-[DOHMdPhi]/2" deltaPhi="[DOHMdPhi]"/>
+		<Tubs name="TIDRing1FiberLayer" rMin="([ICBR]-[tidringpar:ICBW]/2)" rMax="([ICBR]+[tidringpar:ICBW]/2)" dz="[tidringpar:FiberLayerT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDRing1CoolManifold" dx="[tidringpar:CoolManifoldW]/2" dy="[CoolManifoldL]/2" dz="[tidringpar:CoolManifoldT]/2"/>
+		<Tubs name="TIDRing1FlatCable" rMin="[FlatCablerIn]" rMax="[FlatCablerOut]" dz="[tidringpar:FlatCableT]/2" startPhi="-[FlatCabledPhi]/2" deltaPhi="[FlatCabledPhi]"/>
+		<Tubs name="TIDRing1FlatCableHole" rMin="[FlatCableHolerIn]" rMax="[FlatCableHolerOut]" dz="[tidringpar:FlatCableT]/2" startPhi="-[FlatCableHoledPhi]/2" deltaPhi="[FlatCableHoledPhi]"/>
+		<SubtractionSolid name="TIDRing1FlatCableCutted">
+			<rSolid name="TIDRing1FlatCable"/>
+			<rSolid name="TIDRing1FlatCableHole"/>
+		</SubtractionSolid>
+	</SolidSection>
+	<LogicalPartSection label="tidring1.xml">
+		<LogicalPart name="TIDStructure1" category="unspecified">
+			<rSolid name="tidringpar:TIDStructure"/>
+			<rMaterial name="tidmaterial:TID_Mech"/>
+		</LogicalPart>
+		<LogicalPart name="TIDICC1" category="unspecified">
+			<rSolid name="tidringpar:TIDICCDS"/>
+			<rMaterial name="tidmaterial:TID_DSAOHBox"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1ICBTail" category="unspecified">
+			<rSolid name="tidring1:TIDRing1ICBTail"/>
+			<rMaterial name="tidmaterial:TID_ICB2"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1ICB" category="unspecified">
+			<rSolid name="tidring1:TIDRing1ICB"/>
+			<rMaterial name="tidmaterial:TID_ICB2"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1DOHM" category="unspecified">
+			<rSolid name="tidring1:TIDRing1DOHM"/>
+			<rMaterial name="tidmaterial:TID_DOHM1"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1Cool1" category="unspecified">
+			<rSolid name="tidring1:TIDRing1Cool1"/>
+			<rMaterial name="tidmaterial:TID_CoolPipe"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1Cool2" category="unspecified">
+			<rSolid name="tidring1:TIDRing1Cool2"/>
+			<rMaterial name="tidmaterial:TID_CoolPipe"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1FiberLayer" category="unspecified">
+			<rSolid name="tidring1:TIDRing1FiberLayer"/>
+			<rMaterial name="tidmaterial:TID_FiberLayer"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1CoolManifold" category="unspecified">
+			<rSolid name="tidring1:TIDRing1CoolManifold"/>
+			<rMaterial name="tidmaterial:TID_CoolManifold"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing1FlatCable" category="unspecified">
+			<rSolid name="tidring1:TIDRing1FlatCableCutted"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_AmphCable"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring1:TIDStructure1"/>
+		<String name="ChildName" value="tidring1:TIDRing1CoolManifold"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="52.5*deg"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0 </Vector>
+	</Algorithm>
+	<!-- Inserts for module fixation  -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring1:TIDStructure1"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="3"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="-9.42*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsInR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring1:TIDStructure1"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="27"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="+9.42*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsInR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring1:TIDStructure1"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="51"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="-4.21*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsOutR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring1:TIDStructure1"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="24"/>
+		<Numeric name="StartCopyNo" value="75"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="+4.21*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsOutR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring1b.xml b/examples/DDCMS/data/tidring1b.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cdad898309da25b7219e4fe1c27b01155569241e
--- /dev/null
+++ b/examples/DDCMS/data/tidring1b.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring1b.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tidring1b.xml">
+		<LogicalPart name="TIDRing1B" category="unspecified">
+			<rSolid name="tidringpar:TIDRing"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidring1b.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDStructure1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1ICB"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1ICB"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1b:TIDRing1B"/>
+			<rChild name="tidring1:TIDRing1FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1b:TIDRing1B"/>
+		<String name="ChildName" value="tidring1:TIDRing1ICBTail"/>
+		<Numeric name="Radius" value="[tidring1:ICBTailRPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			167.5*deg,         117.5*deg,           77.5*deg,          27.5*deg,
+			347.5*deg,         297.5*deg,          257.5*deg,         207.5*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ], [tidringpar:ICBZ],
+			-[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ], [tidringpar:ICBZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1b:TIDRing1B"/>
+		<String name="ChildName" value="tidringpar:TIDCCUMBox"/>
+		<Numeric name="Radius" value="[tidring1:CCUMrPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			167.5*deg,         117.5*deg,           77.5*deg,          27.5*deg,
+			347.5*deg,         297.5*deg,          257.5*deg,         207.5*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],-[tidringpar:CCUMZ],  [tidringpar:CCUMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1b:TIDRing1B"/>
+		<String name="ChildName" value="tidring1:TIDRing1DOHM"/>
+		<Numeric name="Radius" value="[tidring1:DOHMrOff]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			[tidring1:DOHMphiPos], [tidring1:DOHMphiPos]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			-[tidringpar:DOHMZ], [tidringpar:DOHMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1b:TIDRing1B"/>
+		<String name="ChildName" value="tidring1:TIDRing1FlatCable"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			[tidring1:FlatCablephiPosF], [tidring1:FlatCablephiPosF]+180*deg, 
+			[tidring1:FlatCablephiPosB], [tidring1:FlatCablephiPosB]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			-[tidringpar:FlatCableZ], -[tidringpar:FlatCableZ], 
+			[tidringpar:FlatCableZ],  [tidringpar:FlatCableZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTIDRingAlgo">
+		<rParent name="tidring1b:TIDRing1B"/>
+		<Vector name="ModuleName" type="string" nEntries="2">
+			tidmodule1l:TIDModule1L, tidmodule1r:TIDModule1R</Vector>
+		<String name="ICCName" value="tidring1:TIDICC1"/>
+		<Numeric name="Number" value="[tidring1:NPhi]"/>
+		<Numeric name="StartAngle" value="[tidring1:PhiOff]"/>
+		<Numeric name="ModuleR" value="[tidring1:RPos]"/>
+		<Vector name="ModuleZ" type="numeric" nEntries="2">
+			-[tidringpar:ModuleZDS],    [tidringpar:ModuleZDS]   </Vector>
+		<Numeric name="ICCR" value="[tidring1:ICCRPos]"/>
+		<Numeric name="ICCShift" value="[zero]"/>
+		<Vector name="ICCZ" type="numeric" nEntries="2">
+			-[tidringpar:ICCZ],         [tidringpar:ICCZ]        </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1b:TIDRing1B"/>
+		<String name="ChildName" value="tidringpar:TIDManifoldFix"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			52.5*deg,         52.5*deg,          232.5*deg,         232.5*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			[tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT] , 
+			-([tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT]),
+			[tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT] , 
+			-([tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT])
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring1f.xml b/examples/DDCMS/data/tidring1f.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b23305ca1b894939495f982498bcaf4018d1bfc5
--- /dev/null
+++ b/examples/DDCMS/data/tidring1f.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring1f.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tidring1f.xml">
+		<LogicalPart name="TIDRing1F" category="unspecified">
+			<rSolid name="tidringpar:TIDRing"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidring1f.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDStructure1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1ICB"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1ICB"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring1f:TIDRing1F"/>
+			<rChild name="tidring1:TIDRing1FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1f:TIDRing1F"/>
+		<String name="ChildName" value="tidring1:TIDRing1ICBTail"/>
+		<Numeric name="Radius" value="[tidring1:ICBTailRPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			167.5*deg,         117.5*deg,           77.5*deg,          27.5*deg,
+			347.5*deg,         297.5*deg,          257.5*deg,         207.5*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ], [tidringpar:ICBZ],
+			-[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ], [tidringpar:ICBZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1f:TIDRing1F"/>
+		<String name="ChildName" value="tidringpar:TIDCCUMBox"/>
+		<Numeric name="Radius" value="[tidring1:CCUMrPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			167.5*deg,         117.5*deg,           77.5*deg,          27.5*deg,
+			347.5*deg,         297.5*deg,          257.5*deg,         207.5*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],
+			-[tidringpar:CCUMZ],  [tidringpar:CCUMZ],-[tidringpar:CCUMZ],  [tidringpar:CCUMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1f:TIDRing1F"/>
+		<String name="ChildName" value="tidring1:TIDRing1DOHM"/>
+		<Numeric name="Radius" value="[tidring1:DOHMrOff]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			[tidring1:DOHMphiPos], [tidring1:DOHMphiPos]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			-[tidringpar:DOHMZ], [tidringpar:DOHMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1f:TIDRing1F"/>
+		<String name="ChildName" value="tidring1:TIDRing1FlatCable"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			[tidring1:FlatCablephiPosF], [tidring1:FlatCablephiPosF]+180*deg, 
+			[tidring1:FlatCablephiPosB], [tidring1:FlatCablephiPosB]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			-[tidringpar:FlatCableZ], -[tidringpar:FlatCableZ], 
+			[tidringpar:FlatCableZ],  [tidringpar:FlatCableZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTIDRingAlgo">
+		<rParent name="tidring1f:TIDRing1F"/>
+		<Vector name="ModuleName" type="string" nEntries="2">
+			tidmodule1l:TIDModule1L, tidmodule1r:TIDModule1R</Vector>
+		<String name="ICCName" value="tidring1:TIDICC1"/>
+		<Numeric name="Number" value="[tidring1:NPhi]"/>
+		<Numeric name="StartAngle" value="[tidring1:PhiOff]"/>
+		<Numeric name="ModuleR" value="[tidring1:RPos]"/>
+		<Vector name="ModuleZ" type="numeric" nEntries="2">
+			-[tidringpar:ModuleZDS],    [tidringpar:ModuleZDS]   </Vector>
+		<Numeric name="ICCR" value="[tidring1:ICCRPos]"/>
+		<Numeric name="ICCShift" value="[zero]"/>
+		<Vector name="ICCZ" type="numeric" nEntries="2">
+			-[tidringpar:ICCZ],         [tidringpar:ICCZ]        </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring1f:TIDRing1F"/>
+		<String name="ChildName" value="tidringpar:TIDManifoldFix"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			52.5*deg,         52.5*deg,          232.5*deg,         232.5*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			[tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT] , 
+			-([tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT]),
+			[tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT] , 
+			-([tidringpar:ManifoldFixZ]+[tidringpar:FiberLayerT]+[tidringpar:ICBT])
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidring2.xml b/examples/DDCMS/data/tidring2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e147d6fad52e3250bc017a160349085d2a338bb4
--- /dev/null
+++ b/examples/DDCMS/data/tidring2.xml
@@ -0,0 +1,287 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidring2.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rmin" value="35.6762*cm"/>
+		<Constant name="NPhi" value="40"/>
+		<Constant name="PhiOff" value="0*deg"/>
+		<Constant name="ICBR" value="33.350*cm"/>
+		<Constant name="ICBTailR" value="[ICBR]+[tidringpar:ICBW]/2"/>
+		<Constant name="RPos" value="[Rmin]+[tidmodule2:ModuleHeight]/2"/>
+		<Constant name="ICCRPos" value="[Rmin]-[tidringpar:ICCROffset]-[tidringpar:ICCH]/2"/>
+		<Constant name="ICBTailW" value="([tidringpar:Rout]-[ICBTailR]-            [tidringpar:ICBTailTol])"/>
+		<Constant name="ICBTailRPos" value="([tidringpar:Rout]+[ICBTailR]-            [tidringpar:ICBTailTol])/2"/>
+		<Constant name="CCUMrPos" value="[ICBTailR]-[tidringpar:CCUMH]/2"/>
+		<Constant name="CoolR1" value="[Rmin]+[tidmodpar:CoolInsertHeightSS]-[tidringpar:CoolD]/2"/>
+		<Constant name="CoolR2" value="[Rmin]+[tidmodule2:CoolInsertShift]"/>
+		<Constant name="DOHMrIn" value="22.8*cm"/>
+		<Constant name="DOHMrMed" value="26.5*cm"/>
+		<Constant name="DOHMrOut" value="29.5*cm"/>
+		<Constant name="DOHMdPhiIn" value="37*deg"/>
+		<Constant name="DOHMdPhiOut" value="55*deg"/>
+		<Constant name="DOHMrOff" value="-0.15*cm"/>
+		<Constant name="DOHMphiPos" value="157.5*deg"/>
+		<Constant name="CoolManifoldL" value="8.0*cm"/>
+		<Constant name="FlatCablerIn" value="[tidringpar:Rin]"/>
+		<Constant name="FlatCablerOut" value="[FlatCablerIn]+4*cm"/>
+		<Constant name="FlatCabledPhi" value="35*deg"/>
+		<Constant name="FlatCablephiPosOff" value="3*deg"/>
+		<Constant name="FlatCablephiPosL" value="[DOHMphiPos]-[FlatCablephiPosOff]-([DOHMdPhiOut]+[FlatCabledPhi])/2"/>
+		<Constant name="FlatCablephiPosR" value="[DOHMphiPos]+[FlatCablephiPosOff]+([DOHMdPhiOut]+[FlatCabledPhi])/2"/>
+		<Constant name="ModuleFixationInsertsInR" value="36.4*cm"/>
+		<Constant name="ModuleFixationInsertsOutR" value="45.4*cm"/>
+	</ConstantsSection>
+	<SolidSection label="tidring2.xml">
+		<Tubs name="TIDRing2ICB" rMin="([ICBR]-[tidringpar:ICBW]/2)" rMax="([ICBR]+[tidringpar:ICBW]/2)" dz="[tidringpar:ICBT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDRing2ICBTail" dx="[tidringpar:ICBTailH]/2" dy="[ICBTailW]/2" dz="[tidringpar:ICBTailT]/2"/>
+		<Torus name="TIDRing2Cool1" innerRadius="[zero]" outerRadius="[tidringpar:CoolD]/2" torusRadius="[CoolR1]" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Torus name="TIDRing2Cool2" innerRadius="[zero]" outerRadius="[tidringpar:CoolD]/2" torusRadius="[CoolR2]" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TIDRing2DOHMIn" rMin="[DOHMrIn]" rMax="[DOHMrMed]" dz="[tidringpar:DOHMT]/2" startPhi="-[DOHMdPhiIn]/2" deltaPhi="[DOHMdPhiIn]"/>
+		<Tubs name="TIDRing2DOHMOut" rMin="[DOHMrMed]" rMax="[DOHMrOut]" dz="[tidringpar:DOHMT]/2" startPhi="-[DOHMdPhiOut]/2" deltaPhi="[DOHMdPhiOut]"/>
+		<UnionSolid name="TIDRing2DOHM">
+			<rSolid name="TIDRing2DOHMIn"/>
+			<rSolid name="TIDRing2DOHMOut"/>
+		</UnionSolid>
+		<Tubs name="TIDRing2FiberLayer" rMin="([ICBR]-[tidringpar:ICBW]/2)" rMax="([ICBR]+[tidringpar:ICBW]/2)" dz="[tidringpar:FiberLayerT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDRing2CoolManifold" dx="[tidringpar:CoolManifoldW]/2" dy="[CoolManifoldL]/2" dz="[tidringpar:CoolManifoldT]/2"/>
+		<Tubs name="TIDRing2FlatCable" rMin="[FlatCablerIn]" rMax="[FlatCablerOut]" dz="[tidringpar:FlatCableT]/2" startPhi="-[FlatCabledPhi]/2" deltaPhi="[FlatCabledPhi]"/>
+	</SolidSection>
+	<LogicalPartSection label="tidring2.xml">
+		<LogicalPart name="TIDRing2" category="unspecified">
+			<rSolid name="tidringpar:TIDRing"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIDStructure2" category="unspecified">
+			<rSolid name="tidringpar:TIDStructure"/>
+			<rMaterial name="tidmaterial:TID_Mech"/>
+		</LogicalPart>
+		<LogicalPart name="TIDICC2" category="unspecified">
+			<rSolid name="tidringpar:TIDICCSS"/>
+			<rMaterial name="tidmaterial:TID_SSAOHBox"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2ICBTail" category="unspecified">
+			<rSolid name="tidring2:TIDRing2ICBTail"/>
+			<rMaterial name="tidmaterial:TID_ICB3"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2ICB" category="unspecified">
+			<rSolid name="tidring2:TIDRing2ICB"/>
+			<rMaterial name="tidmaterial:TID_ICB3"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2DOHM" category="unspecified">
+			<rSolid name="tidring2:TIDRing2DOHM"/>
+			<rMaterial name="tidmaterial:TID_DOHM2"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2Cool1" category="unspecified">
+			<rSolid name="tidring2:TIDRing2Cool1"/>
+			<rMaterial name="tidmaterial:TID_CoolPipe"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2Cool2" category="unspecified">
+			<rSolid name="tidring2:TIDRing2Cool2"/>
+			<rMaterial name="tidmaterial:TID_CoolPipe"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2FiberLayer" category="unspecified">
+			<rSolid name="tidring2:TIDRing2FiberLayer"/>
+			<rMaterial name="tidmaterial:TID_FiberLayer"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2CoolManifold" category="unspecified">
+			<rSolid name="tidring2:TIDRing2CoolManifold"/>
+			<rMaterial name="tidmaterial:TID_CoolManifold"/>
+		</LogicalPart>
+		<LogicalPart name="TIDRing2FlatCable" category="unspecified">
+			<rSolid name="tidring2:TIDRing2FlatCable"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_AmphCable"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tidring2.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDStructure2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2ICB"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2ICB"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:ICBZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2Cool1"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2Cool2"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:CoolZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="-[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tidring2:TIDRing2"/>
+			<rChild name="tidring2:TIDRing2FiberLayer"/>
+			<Translation x="[zero]" y="[zero]" z="[tidringpar:FiberLayerZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring2:TIDRing2"/>
+		<String name="ChildName" value="tidring2:TIDRing2ICBTail"/>
+		<Numeric name="Radius" value="[ICBTailRPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			180.0*deg,         135.0*deg,          126.0*deg,           9.0*deg,
+			360.0*deg,         315.0*deg,          306.0*deg,         189.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			[tidringpar:ICBZ], -[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ],
+			[tidringpar:ICBZ], -[tidringpar:ICBZ], [tidringpar:ICBZ], -[tidringpar:ICBZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring2:TIDRing2"/>
+		<String name="ChildName" value="tidringpar:TIDCCUMBox"/>
+		<Numeric name="Radius" value="[CCUMrPos]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			180.0*deg,         135.0*deg,          126.0*deg,           9.0*deg,
+			360.0*deg,         315.0*deg,          306.0*deg,         189.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			[tidringpar:CCUMZ], -[tidringpar:CCUMZ], [tidringpar:CCUMZ], -[tidringpar:CCUMZ],
+			[tidringpar:CCUMZ], -[tidringpar:CCUMZ], [tidringpar:CCUMZ], -[tidringpar:CCUMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring2:TIDRing2"/>
+		<String name="ChildName" value="tidring2:TIDRing2DOHM"/>
+		<Numeric name="Radius" value="[tidring2:DOHMrOff]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			[DOHMphiPos], [DOHMphiPos]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			-[tidringpar:DOHMZ], [tidringpar:DOHMZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring2:TIDRing2"/>
+		<String name="ChildName" value="tidring2:TIDRing2FlatCable"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			[FlatCablephiPosL], [FlatCablephiPosR], [FlatCablephiPosL]+180*deg, [FlatCablephiPosR]+180*deg,
+			[FlatCablephiPosL], [FlatCablephiPosR], [FlatCablephiPosL]+180*deg, [FlatCablephiPosR]+180*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			-[tidringpar:FlatCableZ], -[tidringpar:FlatCableZ],  -[tidringpar:FlatCableZ],  -[tidringpar:FlatCableZ], 
+			[tidringpar:FlatCableZ],  [tidringpar:FlatCableZ],   [tidringpar:FlatCableZ],   [tidringpar:FlatCableZ]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring2:TIDStructure2"/>
+		<String name="ChildName" value="tidring2:TIDRing2CoolManifold"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="63.0*deg"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0 </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTIDRingAlgo">
+		<rParent name="tidring2:TIDRing2"/>
+		<Vector name="ModuleName" type="string" nEntries="2">
+			tidmodule2:TIDModule2,   tidmodule2:TIDModule2</Vector>
+		<String name="ICCName" value="tidring2:TIDICC2"/>
+		<Numeric name="Number" value="[NPhi]"/>
+		<Numeric name="StartAngle" value="[PhiOff]"/>
+		<Numeric name="ModuleR" value="[RPos]"/>
+		<Vector name="ModuleZ" type="numeric" nEntries="2">
+			-[tidringpar:ModuleZSS],    [tidringpar:ModuleZSS]   </Vector>
+		<Numeric name="ICCR" value="[ICCRPos]"/>
+		<Numeric name="ICCShift" value="[tidringpar:ICCW]/2"/>
+		<Vector name="ICCZ" type="numeric" nEntries="2">
+			-[tidringpar:ICCZ],         [tidringpar:ICCZ]        </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tidring2:TIDRing2"/>
+		<String name="ChildName" value="tidringpar:TIDManifoldFix"/>
+		<Numeric name="Radius" value="[tidringpar:CoolManifoldR]"/>
+		<Numeric name="Tilt" value="-90*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="4">
+			63.0*deg,         63.0*deg,          243.0*deg,         243.0*deg
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="4">
+			[tidringpar:ManifoldFixZ], -[tidringpar:ManifoldFixZ],
+			[tidringpar:ManifoldFixZ], -[tidringpar:ManifoldFixZ]
+		</Vector>
+	</Algorithm>
+	<!-- Inserts for module fixation  -->
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring2:TIDStructure2"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFixSmall"/>
+		<Numeric name="N" value="40"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="-5.17*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsInR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring2:TIDStructure2"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFixSmall"/>
+		<Numeric name="N" value="40"/>
+		<Numeric name="StartCopyNo" value="41"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="+5.17*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsInR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring2:TIDStructure2"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="40"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="-5.54*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsOutR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tidring2:TIDStructure2"/>
+		<String name="ChildName" value="tidringpar:TIDModuleFix"/>
+		<Numeric name="N" value="40"/>
+		<Numeric name="StartCopyNo" value="41"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="+5.54*deg"/>
+		<Numeric name="Radius" value="[ModuleFixationInsertsOutR]"/>
+		<Vector name="Center" type="numeric" nEntries="3">
+			[zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tidringpar.xml b/examples/DDCMS/data/tidringpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..64a57c8baca9fa90960311f6bab34caf47824091
--- /dev/null
+++ b/examples/DDCMS/data/tidringpar.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tidringpar.xml" eval="true">
+		<Constant name="Rin" value="22.50*cm"/>
+		<Constant name="Rout" value="50.90*cm"/>
+		<Constant name="RingT" value="3.40*cm"/>
+		<!-- MAX ALLOWED VALUE 3.5 cm -->
+		<Constant name="StructureT" value="0.80*cm"/>
+		<!-- DOHM  -->
+		<Constant name="DOHMT" value="0.22*cm"/>
+		<Constant name="DOHMZ" value="([StructureT]+[DOHMT])/2"/>
+		<!-- Flat Amphenol 26 -->
+		<Constant name="FlatCableT" value="0.06*cm"/>
+		<Constant name="FlatCableZ" value="([StructureT]+[FlatCableT])/2"/>
+		<!-- MotherCables -->
+		<Constant name="ICBW" value="2.50*cm"/>
+		<Constant name="ICBT" value="0.12*cm"/>
+		<Constant name="ICBZ" value="([StructureT]+[ICBT])/2"/>
+		<Constant name="ICBTailH" value="3.26*cm"/>
+		<Constant name="ICBTailT" value="[ICBT]"/>
+		<Constant name="ICBTailTol" value="0.05*cm"/>
+		<!-- Layer of the Fiber Pigtails -->
+		<Constant name="FiberLayerT" value="0.05*cm"/>
+		<Constant name="FiberLayerZ" value="([StructureT]+2*[ICBT]+[FiberLayerT])/2"/>
+		<!-- Cooling Pipes -->
+		<Constant name="CoolD" value="0.35*cm"/>
+		<!-- diameter of the pipe -->
+		<Constant name="CoolZ" value="([StructureT]/2)+0.375*cm"/>
+		<!-- Cooling Manifolds -->
+		<Constant name="CoolManifoldR" value="49.00*cm"/>
+		<Constant name="CoolManifoldW" value="2.00*cm"/>
+		<Constant name="CoolManifoldT" value="0.80*cm"/>
+		<Constant name="ManifoldFixH" value="4.0*cm"/>
+		<Constant name="ManifoldFixW" value="5.6*cm"/>
+		<Constant name="ManifoldFixT" value="0.20*cm"/>
+		<Constant name="ManifoldFixZ" value="([StructureT]+[ManifoldFixT])/2"/>
+		<!-- AOH boxes (bottom side at the same height of cooling pipes) -->
+		<Constant name="ICCH" value="2.70*cm"/>
+		<Constant name="ICCW" value="2.80*cm"/>
+		<Constant name="ICCT" value="0.60*cm"/>
+		<Constant name="ICCZ" value="[CoolZ]+([ICCT]-[CoolD])/2"/>
+		<Constant name="ICCROffset" value="0.60*cm"/>
+		<!-- Modules -->
+		<Constant name="ModuleZDS" value="1.305*cm"/>
+		<Constant name="ModuleZSS" value="1.226*cm"/>
+		<!--  Disk inserts for the fixation of the modules -->
+		<Constant name="ModuleFixRin" value="0.160*cm"/>
+		<Constant name="ModuleFixRout" value="0.515*cm"/>
+		<Constant name="ModuleFixRinSmall" value="0.140*cm"/>
+		<Constant name="ModuleFixRoutSmall" value="0.410*cm"/>
+		<Constant name="ModuleFixExtraT" value="[tid:zero]"/>
+		<!-- CCUM boxes -->
+		<Constant name="CCUMH" value="3.30*cm"/>
+		<Constant name="CCUMW" value="2.40*cm"/>
+		<Constant name="CCUMT" value="0.76*cm"/>
+		<Constant name="CCUMZ" value="[ICBT]+[FiberLayerT]+([StructureT]+[CCUMT])/2"/>
+	</ConstantsSection>
+	<SolidSection label="tidringpar.xml">
+		<Tubs name="TIDRing" rMin="[Rin]" rMax="[tid:WheelRout]" dz="[RingT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TIDStructure" rMin="[Rin]" rMax="[Rout]" dz="[StructureT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Box name="TIDICCSS" dx="[ICCW]/2" dy="[ICCT]/2" dz="[ICCH]/2"/>
+		<Box name="TIDICCDS" dx="[ICCW]" dy="[ICCT]/2" dz="[ICCH]/2"/>
+		<Box name="TIDCCUM" dx="[CCUMW]/2" dy="[CCUMH]/2" dz="[CCUMT]/2"/>
+		<Box name="TIDManifoldFix" dx="[ManifoldFixW]/2" dy="[ManifoldFixH]/2" dz="[ManifoldFixT]/2"/>
+		<Tubs name="TIDModuleFix" rMin="[ModuleFixRin]" rMax="[ModuleFixRout]" dz="[ModuleFixExtraT]+[StructureT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+		<Tubs name="TIDModuleFixSmall" rMin="[ModuleFixRinSmall]" rMax="[ModuleFixRoutSmall]" dz="[ModuleFixExtraT]+[StructureT]/2" startPhi="0*deg" deltaPhi="360.*deg"/>
+	</SolidSection>
+	<LogicalPartSection label="tidringpar.xml">
+		<LogicalPart name="TIDManifoldFix" category="unspecified">
+			<rSolid name="TIDManifoldFix"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TIDModuleFix" category="unspecified">
+			<rSolid name="TIDModuleFix"/>
+			<rMaterial name="tidmaterial:TID_ModuleFix"/>
+		</LogicalPart>
+		<LogicalPart name="TIDModuleFixSmall" category="unspecified">
+			<rSolid name="TIDModuleFixSmall"/>
+			<rMaterial name="tidmaterial:TID_ModuleFix"/>
+		</LogicalPart>
+		<LogicalPart name="TIDCCUMBox" category="unspecified">
+			<rSolid name="TIDCCUM"/>
+			<rMaterial name="tibtidcommonmaterial:TIBTID_CCUM"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tob.xml b/examples/DDCMS/data/tob.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d9c4243bd802a0507bb3a496b2be563a10595b01
--- /dev/null
+++ b/examples/DDCMS/data/tob.xml
@@ -0,0 +1,1404 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tob.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Rin1" value="54.0*cm"/>
+		<Constant name="Rin2" value="58.0*cm"/>
+		<Constant name="Rin3" value="1.160*m"/>
+		<Constant name="Rout" value="1.169*m"/>
+		<Constant name="Zv0" value="1.100*m"/>
+		<Constant name="Zv1" value="1.160*m"/>
+		<Constant name="Zv2" value="1.180*m"/>
+		<Constant name="Zv3" value="2.820*m"/>
+		<Constant name="StiffenerL" value="720*mm"/>
+		<Constant name="StiffenerR" value="0.400*cm"/>
+		<Constant name="RailTopDy" value="8.5*mm"/>
+		<Constant name="RailBottomDy" value="15*mm"/>
+		<Constant name="RailDx" value="4.3*mm"/>
+		<Constant name="RailL" value="1.100*m"/>
+		<Constant name="RailInX" value="54.433*cm"/>
+		<Constant name="StiffenerY" value="2.700*cm"/>
+		<Constant name="AlPieceR0" value="1.161*m"/>
+		<Constant name="AlPieceR1" value="1.164*m"/>
+		<Constant name="AlPieceR2" value="1.169*m"/>
+		<Constant name="AlPiecePhi1" value="1.535*deg"/>
+		<Constant name="AlPiecePhi2" value="175.535*deg"/>
+		<Constant name="AlPiecePhi3" value="1.580*deg"/>
+		<Constant name="AlPiecePhi4" value="175.180*deg"/>
+		<Constant name="AlPieceDPhi1" value="4.930*deg"/>
+		<Constant name="AlPieceDPhi2" value="2.930*deg"/>
+		<Constant name="AlPieceDPhi3" value="0.240*deg"/>
+		<Constant name="AlPieceDPhi4" value="3.240*deg"/>
+		<Constant name="AlPieceDz1" value="5.000*cm"/>
+		<Constant name="AlPieceDz2" value="0.500*cm"/>
+		<Constant name="AlPieceZ" value="69.00*cm"/>
+		<Constant name="CFTubeRin1" value="1.142*m"/>
+		<Constant name="CFTubeRout1" value="1.160*m"/>
+		<Constant name="CFTubeRin2" value="55.00*cm"/>
+		<Constant name="CFTubeRout2" value="57.80*cm"/>
+		<Constant name="CFTubeL1" value="27.80*cm"/>
+		<Constant name="CFTubeL2" value="38.80*cm"/>
+		<Constant name="CFTubeZ" value="69.00*cm"/>
+		<Constant name="NomexTubeRin1" value="1.1425*m"/>
+		<Constant name="NomexTubeRout1" value="1.1595*m"/>
+		<Constant name="NomexTubeRin2" value="55.05*cm"/>
+		<Constant name="NomexTubeRout2" value="57.75*cm"/>
+		<Constant name="NomexTubeF1" value="48.633*deg"/>
+		<Constant name="NomexTubeF2" value="29.346*deg"/>
+		<Constant name="NomexTubeF3" value="35.774*deg"/>
+		<Constant name="NomexInPhi1" value="48.214*deg"/>
+		<Constant name="NomexInPhi2" value="90.000*deg"/>
+		<Constant name="NomexInPhi3" value="131.790*deg"/>
+		<Constant name="NomexInPhi4" value="183.214*deg"/>
+		<Constant name="NomexInPhi5" value="228.214*deg"/>
+		<Constant name="NomexInPhi6" value="273.214*deg"/>
+		<Constant name="NomexInPhi7" value="315.000*deg"/>
+		<Constant name="NomexInPhi8" value="356.785*deg"/>
+		<Constant name="AlignTubeDx" value="1.150*cm"/>
+		<Constant name="AlignTubeDy" value="1.338*cm"/>
+		<Constant name="AlignTubeT" value="0.200*cm"/>
+		<Constant name="AlignPhi1" value="22.500*deg"/>
+		<Constant name="AlignPhi2" value="73.928*deg"/>
+		<Constant name="AlignPhi3" value="106.071*deg"/>
+		<Constant name="AlignPhi4" value="157.500*deg"/>
+		<Constant name="AlignPhi5" value="208.929*deg"/>
+		<Constant name="AlignPhi6" value="247.500*deg"/>
+		<Constant name="AlignPhi7" value="298.929*deg"/>
+		<Constant name="AlignPhi8" value="331.071*deg"/>
+		<Constant name="PottingRin1" value="1.142*m"/>
+		<Constant name="PottingRout1" value="1.157*m"/>
+		<Constant name="PottingRin2" value="55.00*cm"/>
+		<Constant name="PottingRout2" value="57.80*cm"/>
+		<Constant name="PottingL" value="0.200*cm"/>
+		<Constant name="PottingZ1" value="108.00*cm"/>
+		<Constant name="PottingZ2" value="30.00*cm"/>
+		<Constant name="PottingZ3" value="28.20*cm"/>
+		<Constant name="ConnectRin1" value="1.157*m"/>
+		<Constant name="ConnectRout1" value="1.160*m"/>
+		<Constant name="ConnectL1" value="1.000*cm"/>
+		<Constant name="ConnectZ11" value="1.090*m"/>
+		<Constant name="ConnectZ12" value="29.00*cm"/>
+		<Constant name="ConnectDphi1" value="4.95*deg"/>
+		<Constant name="ConnectRin2" value="1.141*m"/>
+		<Constant name="ConnectRout2" value="1.142*m"/>
+		<Constant name="ExtraConnectL" value="1.360*cm"/>
+		<Constant name="ConnectStartPhi" value="11.25*deg"/>
+		<Constant name="ConnectL2" value="2.000*cm+[ExtraConnectL]"/>
+		<Constant name="ConnectZ21" value="1.058*m-[ExtraConnectL]"/>
+		<Constant name="ConnectZ22" value="32.20*cm+[ExtraConnectL]"/>
+		<Constant name="ConnectZ23" value="25.80*cm-[ExtraConnectL]"/>
+		<Constant name="ConnectDphi2" value="3.51*deg"/>
+		<Constant name="ConnectRin3" value="1.160*m"/>
+		<Constant name="ConnectRout3" value="1.161*m"/>
+		<Constant name="ConnectL3" value="2.000*cm+[ExtraConnectL]"/>
+		<Constant name="ConnectL23" value="1.000*mm"/>
+		<Constant name="Connect23ZOffset" value="([ConnectL3]-[ConnectL23])"/>
+		<Constant name="ConnectDphi3" value="3.46*deg"/>
+		<Constant name="ConnectRin4" value="57.80*cm"/>
+		<Constant name="ConnectRout4" value="58.10*cm"/>
+		<Constant name="ConnectL4" value="1.000*cm"/>
+		<Constant name="ConnectDphi4" value="9.89*deg"/>
+		<Constant name="ConnectRin5" value="54.90*cm"/>
+		<Constant name="ConnectRout5" value="55.00*cm"/>
+		<Constant name="ConnectL5" value="2.000*cm+[ExtraConnectL]"/>
+		<Constant name="ConnectDphi5" value="7.30*deg"/>
+		<Constant name="ConnectRin6" value="57.80*cm"/>
+		<Constant name="ConnectRout6" value="57.90*cm"/>
+		<Constant name="ConnectL6" value="2.000*cm+[ExtraConnectL]"/>
+		<Constant name="ConnectL56" value="[ConnectL23]"/>
+		<Constant name="Connect56ZOffset" value="([ConnectL6]-[ConnectL56])"/>
+		<Constant name="ConnectDphi6" value="6.93*deg"/>
+		<Constant name="Layer0Rin" value="58.20*cm"/>
+		<Constant name="Layer0Rout" value="64.24*cm"/>
+		<Constant name="Layer0LowR" value="59.20*cm"/>
+		<Constant name="Layer0HighR" value="62.40*cm"/>
+		<Constant name="Layer0CoolRa" value="65.40*cm"/>
+		<Constant name="Layer0CoolRr" value="66.40*cm"/>
+		<Constant name="Layer1Rin" value="66.60*cm"/>
+		<Constant name="Layer1Rout" value="72.80*cm"/>
+		<Constant name="Layer1LowR" value="67.60*cm"/>
+		<Constant name="Layer1HighR" value="70.80*cm"/>
+		<Constant name="Layer1CoolRa" value="74.00*cm"/>
+		<Constant name="Layer1CoolRr" value="75.00*cm"/>
+		<Constant name="Layer2Rin" value="75.40*cm"/>
+		<Constant name="Layer2Rout" value="81.40*cm"/>
+		<Constant name="Layer2LowR" value="76.40*cm"/>
+		<Constant name="Layer2HighR" value="79.60*cm"/>
+		<Constant name="Layer2CoolRa" value="82.50*cm"/>
+		<Constant name="Layer2CoolRr" value="83.50*cm"/>
+		<Constant name="Layer3Rin" value="84.10*cm"/>
+		<Constant name="Layer3Rout" value="89.90*cm"/>
+		<Constant name="Layer3LowR" value="85.20*cm"/>
+		<Constant name="Layer3HighR" value="88.40*cm"/>
+		<Constant name="Layer3CoolRa" value="91.10*cm"/>
+		<Constant name="Layer3CoolRr" value="92.10*cm"/>
+		<Constant name="Layer4Rin" value="93.80*cm"/>
+		<Constant name="Layer4Rout" value="99.60*cm"/>
+		<Constant name="Layer4LowR" value="94.90*cm"/>
+		<Constant name="Layer4HighR" value="98.10*cm"/>
+		<Constant name="Layer4CoolRa" value="100.70*cm"/>
+		<Constant name="Layer4CoolRr" value="101.70*cm"/>
+		<Constant name="Layer5Rin" value="105.30*cm"/>
+		<Constant name="Layer5Rout" value="111.10*cm"/>
+		<Constant name="Layer5LowR" value="106.40*cm"/>
+		<Constant name="Layer5HighR" value="109.60*cm"/>
+		<Constant name="Layer5CoolRa" value="112.20*cm"/>
+		<Constant name="Layer5CoolRr" value="113.20*cm"/>
+		<Constant name="RibRin" value="58.10*cm"/>
+		<Constant name="RibRout" value="115.70*cm"/>
+		<Constant name="RibDZ" value="0.350*cm"/>
+		<Constant name="RibZ1" value="109.0*cm"/>
+		<Constant name="RibZ2" value="29.00*cm"/>
+		<Constant name="SideDiskDz" value="3.250*cm"/>
+		<Constant name="SideDiskZ" value="114.05*cm"/>
+		<Constant name="DetectorTilt" value="0*deg"/>
+		<Constant name="AxCableRin" value="[Rin3]"/>
+		<Constant name="AxCableRout" value="[Rout]"/>
+		<Constant name="AxCableT" value="0.210*cm"/>
+		<Constant name="AxCableDz" value="([Zv3]-[Zv1])/2"/>
+		<Constant name="AxCableW" value="22.5*deg"/>
+		<Constant name="AxCableZ" value="([Zv1]+[Zv3])/2"/>
+		<Constant name="DOHMsDz" value="0.3*cm"/>
+		<Constant name="DOHMW" value="47*mm"/>
+		<Constant name="DOHML" value="71.5*mm"/>
+		<Constant name="DOHMT" value="3.0*mm"/>
+		<Constant name="DOHMRadius1" value="690*mm"/>
+		<Constant name="DOHMRadius2" value="860*mm"/>
+		<Constant name="DOHMRadius3" value="1040*mm"/>
+		<Constant name="DOHM_R1_phi1" value="9.417*deg"/>
+		<Constant name="DOHM_R1_phi2" value="45.383*deg"/>
+		<Constant name="DOHM_R1_phi3" value="65.583*deg"/>
+		<Constant name="DOHM_R1_phi4" value="85.118*deg"/>
+		<Constant name="DOHM_R1_phi5" value="108.583*deg"/>
+		<Constant name="DOHM_R1_phi6" value="135.918*deg"/>
+		<Constant name="DOHM_R1_phi7" value="162.083*deg"/>
+		<Constant name="DOHM_R1_phi8" value="186.918*deg"/>
+		<Constant name="DOHM_R1_phi9" value="208.083*deg"/>
+		<Constant name="DOHM_R1_phi10" value="227.418*deg"/>
+		<Constant name="DOHM_R1_phi11" value="251.083*deg"/>
+		<Constant name="DOHM_R1_phi12" value="282.418*deg"/>
+		<Constant name="DOHM_R1_phi13" value="302.083*deg"/>
+		<Constant name="DOHM_R1_phi14" value="325.918*deg"/>
+		<Constant name="DOHM_R1_phi15" value="346.083*deg"/>
+		<Constant name="DOHM_R2_phi1" value="4.066*deg"/>
+		<Constant name="DOHM_R2_phi2" value="20.066*deg"/>
+		<Constant name="DOHM_R2_phi3" value="52.066*deg"/>
+		<Constant name="DOHM_R2_phi4" value="68.066*deg"/>
+		<Constant name="DOHM_R2_phi5" value="105.567*deg"/>
+		<Constant name="DOHM_R2_phi6" value="134.067*deg"/>
+		<Constant name="DOHM_R2_phi7" value="153.067*deg"/>
+		<Constant name="DOHM_R2_phi8" value="176.067*deg"/>
+		<Constant name="DOHM_R2_phi9" value="194.067*deg"/>
+		<Constant name="DOHM_R2_phi10" value="225.567*deg"/>
+		<Constant name="DOHM_R2_phi11" value="244.067*deg"/>
+		<Constant name="DOHM_R2_phi12" value="276.067*deg"/>
+		<Constant name="DOHM_R2_phi13" value="291.067*deg"/>
+		<Constant name="DOHM_R2_phi14" value="322.067*deg"/>
+		<Constant name="DOHM_R2_phi15" value="341.067*deg"/>
+		<Constant name="DOHM_R3_phi1" value="4.055*deg"/>
+		<Constant name="DOHM_R3_phi2" value="36.055*deg"/>
+		<Constant name="DOHM_R3_phi3" value="50.055*deg"/>
+		<Constant name="DOHM_R3_phi4" value="78.055*deg"/>
+		<Constant name="DOHM_R3_phi5" value="92.055*deg"/>
+		<Constant name="DOHM_R3_phi6" value="125.055*deg"/>
+		<Constant name="DOHM_R3_phi7" value="140.055*deg"/>
+		<Constant name="DOHM_R3_phi8" value="176.055*deg"/>
+		<Constant name="DOHM_R3_phi9" value="189.055*deg"/>
+		<Constant name="DOHM_R3_phi10" value="218.055*deg"/>
+		<Constant name="DOHM_R3_phi11" value="231.055*deg"/>
+		<Constant name="DOHM_R3_phi12" value="257.055*deg"/>
+		<Constant name="DOHM_R3_phi13" value="270.055*deg"/>
+		<Constant name="DOHM_R3_phi14" value="303.055*deg"/>
+		<Constant name="DOHM_R3_phi15" value="317.055*deg"/>
+		<Constant name="DOHM_R3_phi16" value="350.055*deg"/>
+		<Constant name="Tol" value="0.0*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tob.xml">
+		<Polycone name="TOB" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="-[Zv3]" rMin="[Rin3]" rMax="[Rout]"/>
+			<ZSection z="-[Zv2]" rMin="[Rin3]" rMax="[Rout]"/>
+			<ZSection z="-[Zv2]" rMin="[Rin2]" rMax="[Rout]"/>
+			<ZSection z="-[Zv1]" rMin="[Rin2]" rMax="[Rout]"/>
+			<ZSection z="-[Zv0]" rMin="[Rin2]" rMax="[Rout]"/>
+			<ZSection z="-[Zv0]" rMin="[Rin1]" rMax="[Rout]"/>
+			<ZSection z="[Zv0]" rMin="[Rin1]" rMax="[Rout]"/>
+			<ZSection z="[Zv0]" rMin="[Rin2]" rMax="[Rout]"/>
+			<ZSection z="[Zv1]" rMin="[Rin2]" rMax="[Rout]"/>
+			<ZSection z="[Zv2]" rMin="[Rin2]" rMax="[Rout]"/>
+			<ZSection z="[Zv2]" rMin="[Rin3]" rMax="[Rout]"/>
+			<ZSection z="[Zv3]" rMin="[Rin3]" rMax="[Rout]"/>
+		</Polycone>
+		<Tubs name="TIBStiffener" rMin="[zero]" rMax="[StiffenerR]" dz="[StiffenerL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Box name="TIBRailTop" dx="[RailDx]" dy="[RailTopDy]" dz="[RailL]"/>
+		<Box name="TIBRailBottom" dx="[RailDx]" dy="[RailBottomDy]" dz="[RailL]"/>
+		<Tubs name="TOBAlPiece1" rMin="[AlPieceR0]" rMax="[AlPieceR1]" dz="[AlPieceDz1]" startPhi="[AlPiecePhi1]" deltaPhi="[AlPieceDPhi1]"/>
+		<Tubs name="TOBAlPiece2" rMin="[AlPieceR0]" rMax="[AlPieceR1]" dz="[AlPieceDz1]" startPhi="[AlPiecePhi2]" deltaPhi="[AlPieceDPhi2]"/>
+		<Tubs name="TOBAlPiece3" rMin="[AlPieceR1]" rMax="[AlPieceR2]" dz="[AlPieceDz2]" startPhi="[AlPiecePhi3]" deltaPhi="[AlPieceDPhi3]"/>
+		<Tubs name="TOBAlPiece4" rMin="[AlPieceR1]" rMax="[AlPieceR2]" dz="[AlPieceDz2]" startPhi="[AlPiecePhi4]" deltaPhi="[AlPieceDPhi4]"/>
+		<Tubs name="TOBCFTube1" rMin="[CFTubeRin1]" rMax="[CFTubeRout1]" dz="[CFTubeL1]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBCFTube2" rMin="[CFTubeRin1]" rMax="[CFTubeRout1]" dz="[CFTubeL2]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBCFTube3" rMin="[CFTubeRin2]" rMax="[CFTubeRout2]" dz="[CFTubeL1]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBCFTube4" rMin="[CFTubeRin2]" rMax="[CFTubeRout2]" dz="[CFTubeL2]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBNomexTube1" rMin="[NomexTubeRin1]" rMax="[NomexTubeRout1]" dz="[CFTubeL1]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBNomexTube2" rMin="[NomexTubeRin1]" rMax="[NomexTubeRout1]" dz="[CFTubeL2]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBNomexTube3" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL1]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBNomexT3In1" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL1]" startPhi="-[NomexTubeF1]/2" deltaPhi="[NomexTubeF1]"/>
+		<Tubs name="TOBNomexT3In2" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL1]" startPhi="-[NomexTubeF2]/2" deltaPhi="[NomexTubeF2]"/>
+		<Tubs name="TOBNomexT3In3" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL1]" startPhi="-[NomexTubeF3]/2" deltaPhi="[NomexTubeF3]"/>
+		<Box name="TOBAlignTube3" dx="[AlignTubeDx]" dy="[AlignTubeDy]" dz="[CFTubeL1]"/>
+		<Box name="TOBAlignT3In" dx="([AlignTubeDx]-[AlignTubeT])" dy="([AlignTubeDy]-[AlignTubeT])" dz="[CFTubeL1]"/>
+		<Tubs name="TOBNomexTube4" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL2]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Box name="TOBAlignTube4" dx="[AlignTubeDx]" dy="[AlignTubeDy]" dz="[CFTubeL2]"/>
+		<Box name="TOBAlignT4In" dx="([AlignTubeDx]-[AlignTubeT])" dy="([AlignTubeDy]-[AlignTubeT])" dz="[CFTubeL2]"/>
+		<Tubs name="TOBNomexT4In1" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL2]" startPhi="-[NomexTubeF1]/2" deltaPhi="[NomexTubeF1]"/>
+		<Tubs name="TOBNomexT4In2" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL2]" startPhi="-[NomexTubeF2]/2" deltaPhi="[NomexTubeF2]"/>
+		<Tubs name="TOBNomexT4In3" rMin="[NomexTubeRin2]" rMax="[NomexTubeRout2]" dz="[CFTubeL2]" startPhi="-[NomexTubeF3]/2" deltaPhi="[NomexTubeF3]"/>
+		<Tubs name="TOBPotting1" rMin="[PottingRin1]" rMax="[PottingRout1]" dz="[PottingL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBPotting2" rMin="[PottingRin2]" rMax="[PottingRout2]" dz="[PottingL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBPotting2I1" rMin="[PottingRin2]" rMax="[PottingRout2]" dz="[PottingL]" startPhi="-[NomexTubeF1]/2" deltaPhi="[NomexTubeF1]"/>
+		<Tubs name="TOBPotting2I2" rMin="[PottingRin2]" rMax="[PottingRout2]" dz="[PottingL]" startPhi="-[NomexTubeF2]/2" deltaPhi="[NomexTubeF2]"/>
+		<Tubs name="TOBPotting2I3" rMin="[PottingRin2]" rMax="[PottingRout2]" dz="[PottingL]" startPhi="-[NomexTubeF3]/2" deltaPhi="[NomexTubeF3]"/>
+		<Tubs name="TOBConnect1" rMin="[ConnectRin1]" rMax="[ConnectRout1]" dz="[ConnectL1]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect1" rMin="[ConnectRin1]" rMax="[ConnectRout1]" dz="[ConnectL1]" startPhi="-[ConnectDphi1]/2" deltaPhi="[ConnectDphi1]"/>
+		<Tubs name="TOBConnect2" rMin="[ConnectRin2]" rMax="[ConnectRout2]" dz="[ConnectL2]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect2" rMin="[ConnectRin2]" rMax="[ConnectRout2]" dz="[ConnectL2]" startPhi="-[ConnectDphi2]/2" deltaPhi="[ConnectDphi2]"/>
+		<Tubs name="TOBConnect3" rMin="[ConnectRin3]" rMax="[ConnectRout3]" dz="[ConnectL3]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect3" rMin="[ConnectRin3]" rMax="[ConnectRout3]" dz="[ConnectL3]" startPhi="-[ConnectDphi3]/2" deltaPhi="[ConnectDphi3]"/>
+		<Tubs name="TOBConnect23" rMin="[ConnectRout2]" rMax="[ConnectRin3]" dz="[ConnectL23]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect23" rMin="[ConnectRout2]" rMax="[ConnectRin3]" dz="[ConnectL23]" startPhi="-[ConnectDphi3]/2" deltaPhi="[ConnectDphi3]"/>
+		<Tubs name="TOBConnect4" rMin="[ConnectRin4]" rMax="[ConnectRout4]" dz="[ConnectL4]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect4" rMin="[ConnectRin4]" rMax="[ConnectRout4]" dz="[ConnectL4]" startPhi="-[ConnectDphi4]/2" deltaPhi="[ConnectDphi4]"/>
+		<Tubs name="TOBConnect5" rMin="[ConnectRin5]" rMax="[ConnectRout5]" dz="[ConnectL5]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect5" rMin="[ConnectRin5]" rMax="[ConnectRout5]" dz="[ConnectL5]" startPhi="-[ConnectDphi5]/2" deltaPhi="[ConnectDphi5]"/>
+		<Tubs name="TOBConnect6" rMin="[ConnectRin6]" rMax="[ConnectRout6]" dz="[ConnectL6]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect6" rMin="[ConnectRin6]" rMax="[ConnectRout6]" dz="[ConnectL6]" startPhi="-[ConnectDphi6]/2" deltaPhi="[ConnectDphi6]"/>
+		<Tubs name="TOBConnect56" rMin="[ConnectRout5]" rMax="[ConnectRin6]" dz="[ConnectL56]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAlConnect56" rMin="[ConnectRout5]" rMax="[ConnectRin6]" dz="[ConnectL56]" startPhi="-[ConnectDphi6]/2" deltaPhi="[ConnectDphi6]"/>
+		<Tubs name="TOBMidRib0" rMin="[ConnectRin5]" rMax="[Layer0Rin]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBMidRib1" rMin="[Layer0Rout]" rMax="[Layer1Rin]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBMidRib2" rMin="[Layer1Rout]" rMax="[Layer2Rin]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBMidRib3" rMin="[Layer2Rout]" rMax="[Layer3Rin]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBMidRib4" rMin="[Layer3Rout]" rMax="[Layer4Rin]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBMidRib5" rMin="[Layer4Rout]" rMax="[Layer5Rin]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBMidRib6" rMin="[Layer5Rout]" rMax="[RibRout]" dz="[RibDZ]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBLayer0" rMin="[Layer0Rin]" rMax="[Layer0Rout]" dz="[tobrodpar:RodL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBLayer1" rMin="[Layer1Rin]" rMax="[Layer1Rout]" dz="[tobrodpar:RodL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBLayer2" rMin="[Layer2Rin]" rMax="[Layer2Rout]" dz="[tobrodpar:RodL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBLayer3" rMin="[Layer3Rin]" rMax="[Layer3Rout]" dz="[tobrodpar:RodL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBLayer4" rMin="[Layer4Rin]" rMax="[Layer4Rout]" dz="[tobrodpar:RodL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBLayer5" rMin="[Layer5Rin]" rMax="[Layer5Rout]" dz="[tobrodpar:RodL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBSideDisk" rMin="[Rin2]" rMax="[Rin3]" dz="[SideDiskDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBAxCabCont" rMin="[AxCableRin]" rMax="[AxCableRout]" dz="[AxCableDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBDOHMs" rMin="[Rin2]" rMax="[Rin3]" dz="[DOHMsDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Box name="TOBDOHM" dx="[DOHMW]" dy="[DOHML]" dz="[DOHMT]-[Tol]"/>
+	</SolidSection>
+	<LogicalPartSection label="tob.xml">
+		<LogicalPart name="TOB" category="unspecified">
+			<rSolid name="TOB"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TIBStiffener" category="unspecified">
+			<rSolid name="TIBStiffener"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TIBRailTop" category="unspecified">
+			<rSolid name="TIBRailTop"/>
+			<rMaterial name="tobmaterial:TIB_RailTop"/>
+		</LogicalPart>
+		<LogicalPart name="TIBRailBottom" category="unspecified">
+			<rSolid name="TIBRailBottom"/>
+			<rMaterial name="tobmaterial:TIB_RailBottom"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlPiece1" category="unspecified">
+			<rSolid name="TOBAlPiece1"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlPiece2" category="unspecified">
+			<rSolid name="TOBAlPiece2"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlPiece3" category="unspecified">
+			<rSolid name="TOBAlPiece3"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlPiece4" category="unspecified">
+			<rSolid name="TOBAlPiece4"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCFTube1" category="unspecified">
+			<rSolid name="TOBCFTube1"/>
+			<rMaterial name="tobmaterial:TOB_CF_Str"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCFTube2" category="unspecified">
+			<rSolid name="TOBCFTube2"/>
+			<rMaterial name="tobmaterial:TOB_CF_Str"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCFTube3" category="unspecified">
+			<rSolid name="TOBCFTube3"/>
+			<rMaterial name="tobmaterial:TOB_CF_Str"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCFTube4" category="unspecified">
+			<rSolid name="TOBCFTube4"/>
+			<rMaterial name="tobmaterial:TOB_CF_Str"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexTube1" category="unspecified">
+			<rSolid name="TOBNomexTube1"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexTube2" category="unspecified">
+			<rSolid name="TOBNomexTube2"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexTube3" category="unspecified">
+			<rSolid name="TOBNomexTube3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexT3In1" category="unspecified">
+			<rSolid name="TOBNomexT3In1"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexT3In2" category="unspecified">
+			<rSolid name="TOBNomexT3In2"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexT3In3" category="unspecified">
+			<rSolid name="TOBNomexT3In3"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlignTube3" category="unspecified">
+			<rSolid name="TOBAlignTube3"/>
+			<rMaterial name="tobmaterial:TOB_CF_Str"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlignT3In" category="unspecified">
+			<rSolid name="TOBAlignT3In"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexTube4" category="unspecified">
+			<rSolid name="TOBNomexTube4"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexT4In1" category="unspecified">
+			<rSolid name="TOBNomexT4In1"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexT4In2" category="unspecified">
+			<rSolid name="TOBNomexT4In2"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBNomexT4In3" category="unspecified">
+			<rSolid name="TOBNomexT4In3"/>
+			<rMaterial name="tobmaterial:TOB_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlignTube4" category="unspecified">
+			<rSolid name="TOBAlignTube4"/>
+			<rMaterial name="tobmaterial:TOB_CF_Str"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlignT4In" category="unspecified">
+			<rSolid name="TOBAlignT4In"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPotting1" category="unspecified">
+			<rSolid name="TOBPotting1"/>
+			<rMaterial name="tobmaterial:TOB_Epoxy"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPotting2" category="unspecified">
+			<rSolid name="TOBPotting2"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPotting2I1" category="unspecified">
+			<rSolid name="TOBPotting2I1"/>
+			<rMaterial name="tobmaterial:TOB_Epoxy"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPotting2I2" category="unspecified">
+			<rSolid name="TOBPotting2I2"/>
+			<rMaterial name="tobmaterial:TOB_Epoxy"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPotting2I3" category="unspecified">
+			<rSolid name="TOBPotting2I3"/>
+			<rMaterial name="tobmaterial:TOB_Epoxy"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect1" category="unspecified">
+			<rSolid name="TOBConnect1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect1" category="unspecified">
+			<rSolid name="TOBAlConnect1"/>
+			<rMaterial name="tobmaterial:TOB_AlCentralConnect"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect2" category="unspecified">
+			<rSolid name="TOBConnect2"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect2" category="unspecified">
+			<rSolid name="TOBAlConnect2"/>
+			<rMaterial name="tobmaterial:TOB_AlSideConnect"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect3" category="unspecified">
+			<rSolid name="TOBConnect3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect3" category="unspecified">
+			<rSolid name="TOBAlConnect3"/>
+			<rMaterial name="tobmaterial:TOB_AlSideConnect"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect23" category="unspecified">
+			<rSolid name="TOBConnect23"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect23" category="unspecified">
+			<rSolid name="TOBAlConnect23"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect4" category="unspecified">
+			<rSolid name="TOBConnect4"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect4" category="unspecified">
+			<rSolid name="TOBAlConnect4"/>
+			<rMaterial name="tobmaterial:TOB_AlCentralConnect"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect5" category="unspecified">
+			<rSolid name="TOBConnect5"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect5" category="unspecified">
+			<rSolid name="TOBAlConnect5"/>
+			<rMaterial name="tobmaterial:TOB_AlSideConnect"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect6" category="unspecified">
+			<rSolid name="TOBConnect6"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect6" category="unspecified">
+			<rSolid name="TOBAlConnect6"/>
+			<rMaterial name="tobmaterial:TOB_AlSideConnect"/>
+		</LogicalPart>
+		<LogicalPart name="TOBConnect56" category="unspecified">
+			<rSolid name="TOBConnect56"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAlConnect56" category="unspecified">
+			<rSolid name="TOBAlConnect56"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib0" category="unspecified">
+			<rSolid name="TOBMidRib0"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib1" category="unspecified">
+			<rSolid name="TOBMidRib1"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib2" category="unspecified">
+			<rSolid name="TOBMidRib2"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib3" category="unspecified">
+			<rSolid name="TOBMidRib3"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib4" category="unspecified">
+			<rSolid name="TOBMidRib4"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib5" category="unspecified">
+			<rSolid name="TOBMidRib5"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBMidRib6" category="unspecified">
+			<rSolid name="TOBMidRib6"/>
+			<rMaterial name="tobmaterial:TOB_middle_ribs"/>
+		</LogicalPart>
+		<LogicalPart name="TOBDOHM" category="unspecified">
+			<rSolid name="TOBDOHM"/>
+			<rMaterial name="tobmaterial:TOB_DOHM"/>
+		</LogicalPart>
+		<LogicalPart name="TOBLayer0" category="unspecified">
+			<rSolid name="TOBLayer0"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBLayer1" category="unspecified">
+			<rSolid name="TOBLayer1"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBLayer2" category="unspecified">
+			<rSolid name="TOBLayer2"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBLayer3" category="unspecified">
+			<rSolid name="TOBLayer3"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBLayer4" category="unspecified">
+			<rSolid name="TOBLayer4"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBLayer5" category="unspecified">
+			<rSolid name="TOBLayer5"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideDisk" category="unspecified">
+			<rSolid name="TOBSideDisk"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAxCabCont" category="unspecified">
+			<rSolid name="TOBAxCabCont"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBDOHMs" category="unspecified">
+			<rSolid name="TOBDOHMs"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tob.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TIBStiffener"/>
+			<Translation x="[RailInX]" y="[StiffenerY]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TIBStiffener"/>
+			<Translation x="-[RailInX]" y="[StiffenerY]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TIBRailTop"/>
+			<Translation x="[RailInX]" y="-[RailTopDy]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TIBRailTop"/>
+			<Translation x="-[RailInX]" y="-[RailTopDy]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TIBRailBottom"/>
+			<Translation x="[RailInX]" y="-2*[RailTopDy]-[RailBottomDy]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TIBRailBottom"/>
+			<Translation x="-[RailInX]" y="-2*[RailTopDy]-[RailBottomDy]" z="[zero]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece1"/>
+			<Translation x="[zero]" y="[zero]" z="-[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece1"/>
+			<Translation x="[zero]" y="[zero]" z="[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece2"/>
+			<Translation x="[zero]" y="[zero]" z="-[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece2"/>
+			<Translation x="[zero]" y="[zero]" z="[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece3"/>
+			<Translation x="[zero]" y="[zero]" z="-[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece3"/>
+			<Translation x="[zero]" y="[zero]" z="[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece4"/>
+			<Translation x="[zero]" y="[zero]" z="-[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAlPiece4"/>
+			<Translation x="[zero]" y="[zero]" z="[AlPieceZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBCFTube1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOBCFTube1"/>
+			<rChild name="tob:TOBNomexTube1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBCFTube2"/>
+			<Translation x="[zero]" y="[zero]" z="[CFTubeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBCFTube2"/>
+			<Translation x="[zero]" y="[zero]" z="-[CFTubeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOBCFTube2"/>
+			<rChild name="tob:TOBNomexTube2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBCFTube3"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOBCFTube3"/>
+			<rChild name="tob:TOBNomexTube3"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOBAlignTube3"/>
+			<rChild name="tob:TOBAlignT3In"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBCFTube4"/>
+			<Translation x="[zero]" y="[zero]" z="[CFTubeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBCFTube4"/>
+			<Translation x="[zero]" y="[zero]" z="-[CFTubeZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOBCFTube4"/>
+			<rChild name="tob:TOBNomexTube4"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOBAlignTube4"/>
+			<rChild name="tob:TOBAlignT4In"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBLayer0"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBLayer1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBLayer2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBLayer3"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBLayer4"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBLayer5"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBSideDisk"/>
+			<Translation x="[zero]" y="[zero]" z="[SideDiskZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBSideDisk"/>
+			<rRotation name="tobrodpar:180D"/>
+			<Translation x="[zero]" y="[zero]" z="-[SideDiskZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBDOHMs"/>
+			<Translation x="[zero]" y="[zero]" z="[SideDiskZ]+[SideDiskDz]+[DOHMsDz]+[Tol]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBDOHMs"/>
+			<Translation x="[zero]" y="[zero]" z="-([SideDiskZ]+[SideDiskDz]+[DOHMsDz]+[Tol])"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAxCabCont"/>
+			<Translation x="[zero]" y="[zero]" z="[AxCableZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tob:TOB"/>
+			<rChild name="tob:TOBAxCabCont"/>
+			<Translation x="[zero]" y="[zero]" z="-[AxCableZ]"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBPotting1"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[PottingZ1],-[PottingZ2],-[PottingZ3], [PottingZ3], [PottingZ2], [PottingZ1]
+		</Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBPotting2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[PottingZ1],-[PottingZ2],-[PottingZ3], [PottingZ3], [PottingZ2], [PottingZ1]
+		</Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBConnect2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[ConnectZ21],-[ConnectZ22],-[ConnectZ23], [ConnectZ23], 
+			[ConnectZ22], [ConnectZ21] </Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect2"/>
+		<String name="ChildName" value="tob:TOBAlConnect2"/>
+		<Numeric name="N" value="16"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[ConnectStartPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect2"/>
+		<String name="ChildName" value="tob:TOBAlConnect2"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBConnect3"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[ConnectZ21],-[ConnectZ22],-[ConnectZ23], [ConnectZ23], 
+			[ConnectZ22], [ConnectZ21] </Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBConnect23"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[ConnectZ21]-[Connect23ZOffset],-[ConnectZ22]+[Connect23ZOffset],-[ConnectZ23]-[Connect23ZOffset], [ConnectZ23]+[Connect23ZOffset], 
+			[ConnectZ22]-[Connect23ZOffset], [ConnectZ21]+[Connect23ZOffset] </Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect3"/>
+		<String name="ChildName" value="tob:TOBAlConnect3"/>
+		<Numeric name="N" value="16"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[ConnectStartPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect3"/>
+		<String name="ChildName" value="tob:TOBAlConnect3"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect23"/>
+		<String name="ChildName" value="tob:TOBAlConnect23"/>
+		<Numeric name="N" value="16"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[ConnectStartPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect23"/>
+		<String name="ChildName" value="tob:TOBAlConnect23"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect4"/>
+		<String name="ChildName" value="tob:TOBAlConnect4"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBConnect5"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[ConnectZ21],-[ConnectZ22],-[ConnectZ23], [ConnectZ23], 
+			[ConnectZ22], [ConnectZ21] </Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect5"/>
+		<String name="ChildName" value="tob:TOBAlConnect5"/>
+		<Numeric name="N" value="16"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[ConnectStartPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect5"/>
+		<String name="ChildName" value="tob:TOBAlConnect5"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBConnect6"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[ConnectZ21],-[ConnectZ22],-[ConnectZ23], [ConnectZ23], 
+			[ConnectZ22], [ConnectZ21] </Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBConnect56"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="6">
+			-[ConnectZ21]-[Connect56ZOffset],-[ConnectZ22]+[Connect56ZOffset],-[ConnectZ23]-[Connect56ZOffset], [ConnectZ23]+[Connect56ZOffset], 
+			[ConnectZ22]-[Connect56ZOffset], [ConnectZ21]+[Connect56ZOffset] </Vector>
+		<Vector name="Rotations" type="string" nEntries="6">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL, 
+			tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect6"/>
+		<String name="ChildName" value="tob:TOBAlConnect6"/>
+		<Numeric name="N" value="16"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[ConnectStartPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect6"/>
+		<String name="ChildName" value="tob:TOBAlConnect6"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect56"/>
+		<String name="ChildName" value="tob:TOBAlConnect56"/>
+		<Numeric name="N" value="16"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="[ConnectStartPhi]"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerAngular">
+		<rParent name="tob:TOBConnect56"/>
+		<String name="ChildName" value="tob:TOBAlConnect56"/>
+		<Numeric name="N" value="2"/>
+		<Numeric name="StartCopyNo" value="17"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="StartAngle" value="0*deg"/>
+		<Numeric name="Radius" value="0"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0  </Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib0"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib1"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib2"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib3"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib4"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib5"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerZPosAlgo">
+		<rParent name="tob:TOB"/>
+		<String name="ChildName" value="tob:TOBMidRib6"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="ZPositions" type="numeric" nEntries="4">
+			-[RibZ1], -[RibZ2],  [RibZ2],  [RibZ1] </Vector>
+		<Vector name="Rotations" type="string" nEntries="4">
+			tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL,  tobrodpar:NULL</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAltAlgo">
+		<rParent name="tob:TOBLayer0"/>
+		<String name="ChildName" value="tobrod0:TOBRod0"/>
+		<Numeric name="Tilt" value="[DetectorTilt]"/>
+		<Numeric name="StartAngle" value="5.3571*deg"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="RadiusIn" value="[Layer0LowR]"/>
+		<Numeric name="RadiusOut" value="[Layer0HighR]"/>
+		<Numeric name="ZPosition" value="[zero]"/>
+		<Numeric name="Number" value="42"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAltAlgo">
+		<rParent name="tob:TOBLayer1"/>
+		<String name="ChildName" value="tobrod1:TOBRod1"/>
+		<Numeric name="Tilt" value="[DetectorTilt]"/>
+		<Numeric name="StartAngle" value="2.1601*deg"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="RadiusIn" value="[Layer1LowR]"/>
+		<Numeric name="RadiusOut" value="[Layer1HighR]"/>
+		<Numeric name="ZPosition" value="[zero]"/>
+		<Numeric name="Number" value="48"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAltAlgo">
+		<rParent name="tob:TOBLayer2"/>
+		<String name="ChildName" value="tobrod2:TOBRod2"/>
+		<Numeric name="Tilt" value="[DetectorTilt]"/>
+		<Numeric name="StartAngle" value="13.0309*deg"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="RadiusIn" value="[Layer2LowR]"/>
+		<Numeric name="RadiusOut" value="[Layer2HighR]"/>
+		<Numeric name="ZPosition" value="[zero]"/>
+		<Numeric name="Number" value="54"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAltAlgo">
+		<rParent name="tob:TOBLayer3"/>
+		<String name="ChildName" value="tobrod3:TOBRod3"/>
+		<Numeric name="Tilt" value="[DetectorTilt]"/>
+		<Numeric name="StartAngle" value="1.5802*deg"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="RadiusIn" value="[Layer3LowR]"/>
+		<Numeric name="RadiusOut" value="[Layer3HighR]"/>
+		<Numeric name="ZPosition" value="[zero]"/>
+		<Numeric name="Number" value="60"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAltAlgo">
+		<rParent name="tob:TOBLayer4"/>
+		<String name="ChildName" value="tobrod4:TOBRod4"/>
+		<Numeric name="Tilt" value="[DetectorTilt]"/>
+		<Numeric name="StartAngle" value="8.4397*deg"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="RadiusIn" value="[Layer4LowR]"/>
+		<Numeric name="RadiusOut" value="[Layer4HighR]"/>
+		<Numeric name="ZPosition" value="[zero]"/>
+		<Numeric name="Number" value="66"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAltAlgo">
+		<rParent name="tob:TOBLayer5"/>
+		<String name="ChildName" value="tobrod5:TOBRod5"/>
+		<Numeric name="Tilt" value="[DetectorTilt]"/>
+		<Numeric name="StartAngle" value="1.3779*deg"/>
+		<Numeric name="RangeAngle" value="360*deg"/>
+		<Numeric name="RadiusIn" value="[Layer5LowR]"/>
+		<Numeric name="RadiusOut" value="[Layer5HighR]"/>
+		<Numeric name="ZPosition" value="[zero]"/>
+		<Numeric name="Number" value="74"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube3"/>
+		<String name="ChildName" value="tob:TOBNomexT3In1"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="5">
+			[NomexInPhi1], [NomexInPhi3], [NomexInPhi4], [NomexInPhi6], [NomexInPhi8]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="5">
+			[zero], [zero], [zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube3"/>
+		<String name="ChildName" value="tob:TOBNomexT3In2"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			[NomexInPhi2], [NomexInPhi7]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			[zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube3"/>
+		<String name="ChildName" value="tob:TOBNomexT3In3"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="1">
+			[NomexInPhi5]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="1">
+			[zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube3"/>
+		<String name="ChildName" value="tob:TOBAlignTube3"/>
+		<Numeric name="Radius" value="([NomexTubeRin2]+[NomexTubeRout2])/2"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			[AlignPhi1], [AlignPhi2], [AlignPhi3], [AlignPhi4],
+			[AlignPhi5], [AlignPhi6], [AlignPhi7], [AlignPhi8]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			[zero], [zero], [zero], [zero], [zero], [zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube4"/>
+		<String name="ChildName" value="tob:TOBNomexT4In1"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="5">
+			[NomexInPhi1], [NomexInPhi3], [NomexInPhi4], [NomexInPhi6], [NomexInPhi8]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="5">
+			[zero], [zero], [zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube4"/>
+		<String name="ChildName" value="tob:TOBNomexT4In2"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			[NomexInPhi2], [NomexInPhi7]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			[zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube4"/>
+		<String name="ChildName" value="tob:TOBNomexT4In3"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="1">
+			[NomexInPhi5]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="1">
+			[zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBNomexTube4"/>
+		<String name="ChildName" value="tob:TOBAlignTube4"/>
+		<Numeric name="Radius" value="([NomexTubeRin2]+[NomexTubeRout2])/2"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="8">
+			[AlignPhi1], [AlignPhi2], [AlignPhi3], [AlignPhi4],
+			[AlignPhi5], [AlignPhi6], [AlignPhi7], [AlignPhi8]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="8">
+			[zero], [zero], [zero], [zero], [zero], [zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBPotting2"/>
+		<String name="ChildName" value="tob:TOBPotting2I1"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="5">
+			[NomexInPhi1], [NomexInPhi3], [NomexInPhi4], [NomexInPhi6], [NomexInPhi8]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="5">
+			[zero], [zero], [zero], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBPotting2"/>
+		<String name="ChildName" value="tob:TOBPotting2I2"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="2">
+			[NomexInPhi2], [NomexInPhi7]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="2">
+			[zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBPotting2"/>
+		<String name="ChildName" value="tob:TOBPotting2I3"/>
+		<Numeric name="Radius" value="[zero]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Vector name="Phi" type="numeric" nEntries="1">
+			[NomexInPhi5]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="1">
+			[zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTOBRadCableAlgo">
+		<rParent name="tob:TOBSideDisk"/>
+		<Numeric name="DiskDz" value="[SideDiskDz]"/>
+		<Numeric name="RMax" value="[Rin3]"/>
+		<Numeric name="CableT" value="0.7*cm"/>
+		<Vector name="RodRin" type="numeric" nEntries="6">
+			[Layer0LowR], [Layer1LowR], [Layer2LowR], 
+			[Layer3LowR], [Layer4LowR], [Layer5LowR]
+		</Vector>
+		<Vector name="RodRout" type="numeric" nEntries="6">
+			[Layer0HighR], [Layer1HighR], [Layer2HighR], 
+			[Layer3HighR], [Layer4HighR], [Layer5HighR]
+		</Vector>
+		<Vector name="CableMaterial" type="string" nEntries="6">
+			tobmaterial:TOB_rad_services1, tobmaterial:TOB_rad_services2, 
+			tobmaterial:TOB_rad_services3, tobmaterial:TOB_rad_services4, 
+			tobmaterial:TOB_rad_services5, tobmaterial:TOB_rad_services6
+		</Vector>
+		<Numeric name="ConnW" value="4.0*cm"/>
+		<Numeric name="ConnT" value="2.3*cm"/>
+		<Vector name="ConnMaterial" type="string" nEntries="6">
+			tobmaterial:TOB_rib1, tobmaterial:TOB_rib2, tobmaterial:TOB_rib3, 
+			tobmaterial:TOB_rib4, tobmaterial:TOB_rib5, tobmaterial:TOB_rib6
+		</Vector>
+		<Numeric name="CoolRin" value="[zero]"/>
+		<Numeric name="CoolRout1" value="3.0*mm"/>
+		<Numeric name="CoolRout2" value="2.8*mm"/>
+		<Numeric name="CoolStartPhi1" value="0*deg"/>
+		<Numeric name="CoolDeltaPhi1" value="360*deg"/>
+		<Numeric name="CoolStartPhi2" value="0*deg"/>
+		<Numeric name="CoolDeltaPhi2" value="360*deg"/>
+		<Vector name="CoolR1" type="numeric" nEntries="6">
+			[Layer0CoolRa], [Layer1CoolRa], [Layer2CoolRa], 
+			[Layer3CoolRa], [Layer4CoolRa], [Layer5CoolRa]
+		</Vector>
+		<Vector name="CoolR2" type="numeric" nEntries="6">
+			[Layer0CoolRr], [Layer1CoolRr], [Layer2CoolRr], 
+			[Layer3CoolRr], [Layer4CoolRr], [Layer5CoolRr]
+		</Vector>
+		<String name="CoolMaterial1" value="trackermaterial:T_CuNi"/>
+		<String name="CoolMaterial2" value="trackermaterial:T_C6F14_F2_-30C"/>
+		<Vector name="RingName" type="string" nEntries="6">
+			1, 2, 3, 4, 5, 6
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTOBAxCableAlgo">
+		<rParent name="tob:TOBAxCabCont"/>
+		<Vector name="SectorNumber" type="string" nEntries="18">
+			1 ,  2 ,  3 ,  4 ,  5 ,  6 ,
+			7 ,  8 ,  9 , 10 , 11 , 12 ,
+			13 , 14 , 15 , 16 , 17 , 18
+		</Vector>
+		<Numeric name="SectorRin" value="[AxCableRin]"/>
+		<Numeric name="SectorRout" value="[AxCableRout]"/>
+		<Numeric name="SectorDz" value="[AxCableDz]"/>
+		<Numeric name="SectorDeltaPhi_B" value="2*deg"/>
+		<Vector name="SectorStartPhi" type="numeric" nEntries="18">
+			-10*deg ,  10*deg ,  30*deg ,  50*deg ,  70*deg ,  90*deg ,
+			110*deg , 130*deg , 150*deg , 170*deg , 190*deg , 210*deg ,
+			230*deg , 250*deg , 270*deg , 290*deg , 310*deg , 330*deg
+		</Vector>
+		<Vector name="SectorMaterial_A" type="string" nEntries="18">
+			materials:Air                    , tobmaterial:TOB_ax_services_A2  ,
+			tobmaterial:TOB_ax_services_A3   , tobmaterial:TOB_ax_services_A4  ,
+			tobmaterial:TOB_ax_services_A5   , materials:Air                   , 
+			tobmaterial:TOB_ax_services_A7   , tobmaterial:TOB_ax_services_A8  ,
+			tobmaterial:TOB_ax_services_A9   , materials:Air                   ,
+			tobmaterial:TOB_ax_services_A11  , tobmaterial:TOB_ax_services_A12 ,
+			tobmaterial:TOB_ax_services_A13  , tobmaterial:TOB_ax_services_A14 ,
+			materials:Air                    , tobmaterial:TOB_ax_services_A16 ,
+			tobmaterial:TOB_ax_services_A17  , tobmaterial:TOB_ax_services_A18
+		</Vector>
+		<Vector name="SectorMaterial_B" type="string" nEntries="18">
+			materials:Air                    , tobmaterial:TOB_ax_services_B2  ,
+			tobmaterial:TOB_ax_services_B3   , tobmaterial:TOB_ax_services_B4  ,
+			tobmaterial:TOB_ax_services_B5   , tobmaterial:TOB_ax_services_B6  ,
+			tobmaterial:TOB_ax_services_B7   , tobmaterial:TOB_ax_services_B8  ,
+			tobmaterial:TOB_ax_services_B9   , materials:Air                   ,
+			tobmaterial:TOB_ax_services_B11  , tobmaterial:TOB_ax_services_B12 ,
+			tobmaterial:TOB_ax_services_B13  , tobmaterial:TOB_ax_services_B14 ,
+			tobmaterial:TOB_ax_services_B15  , tobmaterial:TOB_ax_services_B16 ,
+			tobmaterial:TOB_ax_services_B17  , tobmaterial:TOB_ax_services_B18
+		</Vector>
+		<Vector name="SectorMaterial_C" type="string" nEntries="18">
+			materials:Air                    , tobmaterial:TOB_ax_services_C2  ,
+			tobmaterial:TOB_ax_services_C3   , tobmaterial:TOB_ax_services_C4  ,
+			materials:Air                    , tobmaterial:TOB_ax_services_C6  ,
+			tobmaterial:TOB_ax_services_C7   , tobmaterial:TOB_ax_services_C8  ,
+			tobmaterial:TOB_ax_services_C9   , materials:Air                   ,
+			tobmaterial:TOB_ax_services_C11  , tobmaterial:TOB_ax_services_C12 ,
+			tobmaterial:TOB_ax_services_C13  , materials:Air                   ,
+			tobmaterial:TOB_ax_services_C15  , tobmaterial:TOB_ax_services_C16 ,
+			tobmaterial:TOB_ax_services_C17  , tobmaterial:TOB_ax_services_C18
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBDOHMs"/>
+		<String name="ChildName" value="tob:TOBDOHM"/>
+		<Numeric name="Radius" value="[DOHMRadius1]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="Phi" type="numeric" nEntries="15">
+			[DOHM_R1_phi1]  , [DOHM_R1_phi2]  , [DOHM_R1_phi3]  , [DOHM_R1_phi4]  , [DOHM_R1_phi5]  ,
+			[DOHM_R1_phi6]  , [DOHM_R1_phi7]  , [DOHM_R1_phi8]  , [DOHM_R1_phi9]  , [DOHM_R1_phi10] ,
+			[DOHM_R1_phi11] , [DOHM_R1_phi12] , [DOHM_R1_phi13] , [DOHM_R1_phi14] , [DOHM_R1_phi15]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="15">
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero] , [zero] , [zero] , [zero] , [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBDOHMs"/>
+		<String name="ChildName" value="tob:TOBDOHM"/>
+		<Numeric name="Radius" value="[DOHMRadius2]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Numeric name="StartCopyNo" value="16"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="Phi" type="numeric" nEntries="15">
+			[DOHM_R2_phi1]  , [DOHM_R2_phi2]  , [DOHM_R2_phi3]  , [DOHM_R2_phi4]  , [DOHM_R2_phi5]  ,
+			[DOHM_R2_phi6]  , [DOHM_R2_phi7]  , [DOHM_R2_phi8]  , [DOHM_R2_phi9]  , [DOHM_R2_phi10] ,
+			[DOHM_R2_phi11] , [DOHM_R2_phi12] , [DOHM_R2_phi13] , [DOHM_R2_phi14] , [DOHM_R2_phi15]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="15">
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero] , [zero] , [zero] , [zero] , [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerPhiAlgo">
+		<rParent name="tob:TOBDOHMs"/>
+		<String name="ChildName" value="tob:TOBDOHM"/>
+		<Numeric name="Radius" value="[DOHMRadius3]"/>
+		<Numeric name="Tilt" value="0*deg"/>
+		<Numeric name="StartCopyNo" value="31"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<Vector name="Phi" type="numeric" nEntries="16">
+			[DOHM_R3_phi1]  , [DOHM_R3_phi2]  , [DOHM_R3_phi3]  , [DOHM_R3_phi4]  , [DOHM_R3_phi5]  ,
+			[DOHM_R3_phi6]  , [DOHM_R3_phi7]  , [DOHM_R3_phi8]  , [DOHM_R3_phi9]  , [DOHM_R3_phi10] ,
+			[DOHM_R3_phi11] , [DOHM_R3_phi12] , [DOHM_R3_phi13] , [DOHM_R3_phi14] , [DOHM_R3_phi15] ,
+			[DOHM_R3_phi16]
+		</Vector>
+		<Vector name="ZPos" type="numeric" nEntries="16">
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero] , [zero] , [zero] , [zero] , [zero] ,
+			[zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobmaterial.xml b/examples/DDCMS/data/tobmaterial.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ac544987094088e645a7f7ce1b20ed99e6359c3a
--- /dev/null
+++ b/examples/DDCMS/data/tobmaterial.xml
@@ -0,0 +1,2248 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <MaterialSection label="tobmaterial.xml">
+    <CompositeMaterial name="TOB_PA_rphi" density="2.33941*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.60133">
+        <rMaterial name="materials:Borosilicate_Glass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.39867">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_PA_ster" density="2.52355*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.61865">
+        <rMaterial name="materials:Borosilicate_Glass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.38135">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_frame_ele" density="1.53600*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.99614">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00386">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_hybrid_supp" density="3.05582*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.00000">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_mod_cool1" density="3.96724*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.81568">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.18432">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_mod_cool2" density="4.39847*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.65993">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12667">
+        <rMaterial name="materials:Steel-008" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.21341">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_mod_comp" density="1.37093*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.00000">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_sid_rail1" density="1.75613*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.77208">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11196">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06609">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00796">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00598">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00796">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01800">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00996">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_sid_rail2" density="1.51100*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.89734">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09311">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00955">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_sid_rail1st" density="1.74227*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.77823">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10526">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06627">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00802">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00603">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00802">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01815">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01004">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_sid_rail2st" density="1.50659*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.89997">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09045">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00958">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ele12" density="2.60162*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.07534">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.66125">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02667">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09994">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00522">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03021">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09855">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00282">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ele34" density="2.60162*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.07534">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.66125">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02667">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09994">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00522">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03021">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09855">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00282">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ele56" density="2.72686*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.07188">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.63088">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02842">
+        <rMaterial name="materials:SMD_metal" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09535">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00554">
+        <rMaterial name="materials:Carbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03055">
+        <rMaterial name="materials:Alumina" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13336">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00403">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_Sens_Interface" density="0.75665*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.99111">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00881">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00008">
+        <rMaterial name="materials:Silicon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_L12_ICC1" density="1.21506*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52633">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.23122">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12043">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00629">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09695">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00692">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01186">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_L12_ICC2" density="1.30529*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.48697">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24364">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12506">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00606">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11564">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00834">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01428">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_L34_ICC1" density="0.82946*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.54002">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.23153">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11265">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.007">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09505">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00507">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00868">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_L34_ICC2" density="0.81274*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50881">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22587">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11652">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00657">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12407">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00670">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01147">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_L56_ICC1" density="0.85619*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.51768">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1161">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05821">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09756">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00547">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00678">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09209">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00491">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00564">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00353">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04434">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00139">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00667">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00841">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03122">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_L56_ICC2" density="0.88614*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.45982">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09073">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07611">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12696">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00684">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00602">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11379">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00521">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00554">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00441">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05545">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00173">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00834">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03904">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_AOH" density="1.80152*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.26137">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19822">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07208">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12027">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0051">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0276">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01088">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0173">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.27912">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00805">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_CCUM" density="0.92095*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.69356">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17904">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08818">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00313">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03007">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00603">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_CONN12" density="1.41913*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00638">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.001">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0545">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01058">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00624">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02384">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10559">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00377">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00221">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03578">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00418">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00383">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00971">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00435">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00534">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00375">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0007">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00732">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0018">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00526">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00051">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01317">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03821">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.31415">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.32868">
+        <rMaterial name="trackermaterial:T_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00914">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_CONN34" density="0.92279*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00982">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00154">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08382">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01627">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00959">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03667">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16238">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0058">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0034">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05502">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00643">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00588">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01494">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00669">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00821">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00576">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00108">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01126">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00276">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0081">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00079">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01013">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03233">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.24158">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25273">
+        <rMaterial name="trackermaterial:T_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00703">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_CONN56" density="1.29029*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00702">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0011">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05995">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01163">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00686">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02622">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11613">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00415">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00243">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03935">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0046">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00421">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01068">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00478">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00587">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00412">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00077">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00805">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00198">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00579">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00056">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01086">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03467">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25916">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.3615">
+        <rMaterial name="trackermaterial:T_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00754">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_optfib_L12" density="1.52360*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.28236">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22972">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03712">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.45081">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_optfib_L34" density="0.84381*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.33607">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.27343">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04951">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.34099">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_optfib_L56" density="0.98768*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.28712">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2336">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0423">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.43699">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ICB" density="3.22606*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.70424">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2645">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00469">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02117">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00505">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00036">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_DOH" density="1.74606*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.10021">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08241">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01198">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01924">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00063">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00484">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00779">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01236">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00288">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22186">
+        <rMaterial name="trackermaterial:Optical_Fiber" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06318">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47262">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_DOHM" density="1.63791*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.28501">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04856">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01248">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01885">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0002">
+        <rMaterial name="materials:Ceramic" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00419">
+        <rMaterial name="trackermaterial:T_Barium_Titanate" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00399">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00255">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03088">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="materials:Air" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00398">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00254">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00142">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22035">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08615">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01596">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00131">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.15624">
+        <rMaterial name="trackermaterial:T_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.10535">
+        <rMaterial name="tobmaterial:TOB_DOH" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_RailTop" density="1.97*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TIB_RailBottom" density="0.83*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.95">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05">
+        <rMaterial name="trackermaterial:T_Rohacell" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_AlSideConnect" density="4.54*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_AlCentralConnect" density="3.19*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_CF_Str" density="1.69*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_Epoxy" density="2.64*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_Nomex" density="32*mg/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_Nomex" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_middle_ribs" density="1.55*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_plate_A" density="674*mg/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.00000000">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_plate_B" density="2.526*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.00000000">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_plate_C" density="2*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.00000000">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rad_services1" density="0.78663*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.16746">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03062">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00452">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01166">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01448">
+        <rMaterial name="trackermaterial:TOB_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08301">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03826">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.64997">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rad_services2" density="1.40155*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.17833">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03222">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00487">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00579">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00685">
+        <rMaterial name="trackermaterial:TOB_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0896">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03793">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.64441">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rad_services3" density="1.76307*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.12662">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0707">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03052">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00536">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00411">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00487">
+        <rMaterial name="trackermaterial:TOB_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09163">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03703">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.62915">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rad_services4" density="2.07459*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.09677">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11456">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03033">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.006">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00314">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00337">
+        <rMaterial name="trackermaterial:TOB_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09787">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03602">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.61194">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rad_services5" density="2.42471*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.07424">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14105">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03734">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00703">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00241">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00218">
+        <rMaterial name="trackermaterial:TOB_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09683">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03552">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.60339">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rad_services6" density="2.86547*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.05738">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.15196">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05736">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01002">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00186">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00242">
+        <rMaterial name="trackermaterial:TOB_Ribbon12xMUConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11577">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03353">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.56969">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rib1" density="0.32766*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00231">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00029">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00244">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00037">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01656">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0135">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0797">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01456">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00856">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03531">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04779">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00438">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01044">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00319">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00204">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02224">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11503">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06666">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0184">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00876">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02224">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.005">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01222">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00958">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09861">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01571">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19901">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16509">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rib2" density="0.32900*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00231">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00029">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00244">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00037">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01656">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0135">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0797">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01456">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00856">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0353">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04778">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00438">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01044">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00319">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00204">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02224">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11503">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06667">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0184">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00876">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02224">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.005">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01222">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00958">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09861">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01571">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19902">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1651">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rib3" density="0.31373*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00188">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00024">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00198">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0003">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01348">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01099">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07554">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0138">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00811">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03346">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04529">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00356">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0085">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0026">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00166">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02328">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1204">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06978">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01926">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00917">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02328">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00524">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01279">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01002">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09605">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00822">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20831">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1728">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rib4" density="0.31523*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00192">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00024">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00203">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00031">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01378">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01123">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07721">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01411">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00829">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0342">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04629">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00364">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00868">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00266">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0017">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02314">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11964">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06934">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01914">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00912">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02314">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0052">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01271">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00996">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09545">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00817">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.207">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17172">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rib5" density="0.31300*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00174">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00022">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00184">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00028">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01248">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01017">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07823">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0143">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0084">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03466">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04691">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0033">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00787">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00241">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00154">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02305">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11922">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.06909">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01907">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00908">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02305">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00519">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01267">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00993">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09511">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01283">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20627">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17111">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rib6" density="0.30602*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.00159">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0002">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00168">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00026">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01141">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0093">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0715">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01306">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00768">
+        <rMaterial name="trackermaterial:T_Silicone_Gel" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.03167">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04287">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00302">
+        <rMaterial name="trackermaterial:T_G10" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00719">
+        <rMaterial name="materials:Brass" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0022">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0014">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02362">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12216">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0708">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01954">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00931">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.02362">
+        <rMaterial name="materials:Polyethylene" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00531">
+        <rMaterial name="materials:T_Kapton" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01298">
+        <rMaterial name="materials:BGA" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01017">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09746">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0133">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.21136">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17533">
+        <rMaterial name="materials:Epoxy" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A2" density="0.89125*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.5716">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.18427">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07157">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00959">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16296">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A3" density="0.83126*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.55157">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26343">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01028">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17472">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A4" density="0.64868*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.62828">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25318">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00659">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.11195">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A5" density="0.88745*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.63146">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12337">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07188">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00963">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16366">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A7" density="0.75817*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.53755">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.36103">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00564">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09578">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A8" density="0.84410*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.48282">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25942">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07557">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01013">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17207">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A9" density="0.75437*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.60779">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29028">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00567">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09627">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A11" density="0.89125*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.5716">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.18427">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07157">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00959">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16296">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A12" density="0.71200*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.57132">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.15348">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05961">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01198">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.2036">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A13" density="0.75437*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.60779">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29028">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00567">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09627">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A14" density="0.88745*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.63146">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12337">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07188">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00963">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16366">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A16" density="0.81815*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.5604">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26765">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07796">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00522">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08876">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A17" density="0.72557*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.5617">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22635">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01178">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20017">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_A18" density="0.75437*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.60779">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29028">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00567">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09627">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B2" density="1.48936*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.51373">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.48627">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B3" density="1.35203*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.46433">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.53567">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B4" density="1.35203*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.46433">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.53567">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B5" density="1.46974*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50723">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.49277">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B6" density="1.50898*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52005">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47995">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B7" density="1.27356*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.43133">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.56867">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B8" density="1.33241*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.45645">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.54355">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B9" density="1.50898*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52005">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47995">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B11" density="1.29318*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.43995">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.56005">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B12" density="1.50898*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52005">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47995">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B13" density="1.50898*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52005">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47995">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B14" density="1.50898*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52005">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.47995">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B15" density="1.48936*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.51373">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.48627">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B16" density="1.43050*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.49372">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.50628">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B17" density="1.46974*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50723">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.49277">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_B18" density="1.46974*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.50723">
+        <rMaterial name="trackermaterial:T_RuggRibbon" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.49277">
+        <rMaterial name="trackermaterial:T_Aluminium" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C2" density="0.87379*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.52472">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.25061">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04867">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00978">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16622">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C3" density="0.73462*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.55478">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.14904">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08683">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01164">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19771">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C4" density="0.74595*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.54636">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29355">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.05701">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00573">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09735">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C6" density="0.86619*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.64696">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.1264">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.04909">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00987">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16768">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C7" density="0.75057*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.67874">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.21881">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0057">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09675">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C8" density="0.71715*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.49725">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.229">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.0593">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01192">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.20252">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C9" density="0.81055*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.69136">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13508">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07869">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00527">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08959">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C11" density="0.83126*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.55157">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.26343">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01028">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.17472">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C12" density="0.73842*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.48294">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.22241">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08638">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01158">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.19669">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C13" density="0.75437*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.60779">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29028">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00567">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09627">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C15" density="0.88745*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.63146">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.12337">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07188">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00963">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.16366">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C16" density="0.75437*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.60779">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.29028">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00567">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.09627">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C17" density="0.79316*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.4496">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.27608">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08042">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.01078">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.18312">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_ax_services_C18" density="0.81055*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="0.69136">
+        <rMaterial name="trackermaterial:CAB_Al36" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.13508">
+        <rMaterial name="trackermaterial:CAB_Al48" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.07869">
+        <rMaterial name="trackermaterial:TOB_DOHM_PowerConn" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.00527">
+        <rMaterial name="trackermaterial:T_Copper" />
+      </MaterialFraction>
+      <MaterialFraction fraction="0.08959">
+        <rMaterial name="trackermaterial:T_C6F14_F2_-30C" />
+      </MaterialFraction>
+    </CompositeMaterial>
+    <CompositeMaterial name="TOB_rod" density="1.796*g/cm3" method="mixture by weight" symbol=" ">
+      <MaterialFraction fraction="1.">
+        <rMaterial name="trackermaterial:T_CarbonFibreStr" />
+      </MaterialFraction>
+    </CompositeMaterial>
+  </MaterialSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobmodpar.xml b/examples/DDCMS/data/tobmodpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0a52fe67fd5c58d306f5bda390cb559984562df6
--- /dev/null
+++ b/examples/DDCMS/data/tobmodpar.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobmodpar.xml" eval="true">
+		<Constant name="ModuleDx" value="6.000*cm"/>
+		<Constant name="ModuleDy" value="0.440*cm"/>
+		<Constant name="ModuleDz" value="12.075*cm"/>
+		<Constant name="HybridDx" value="3.000*cm"/>
+		<Constant name="HybridDy" value="0.025*cm"/>
+		<Constant name="HybridDz" value="1.250*cm"/>
+		<Constant name="HybridY" value="0.215*cm"/>
+		<Constant name="HybridZ" value="9.965*cm"/>
+		<Constant name="PADx" value="4.300*cm"/>
+		<Constant name="PADy" value="0.055*cm"/>
+		<Constant name="PA1Dz" value="0.625*cm"/>
+		<Constant name="PA2Dz1" value="0.8215*cm"/>
+		<Constant name="PA2Dz2" value="0.3900*cm"/>
+		<Constant name="PA2Theta" value="2.87237*deg"/>
+		<Constant name="PAY" value="0.185*cm"/>
+		<Constant name="PAZ" value="8.060*cm"/>
+		<Constant name="SideRailDx" value="0.850*cm"/>
+		<Constant name="SideRailDy" value="0.040*cm"/>
+		<Constant name="SideRailDz" value="10.50*cm"/>
+		<Constant name="SideRailX" value="5.150*cm"/>
+		<Constant name="SideRailY" value="0.125*cm"/>
+		<Constant name="SideRailZ" value="1.575*cm"/>
+		<Constant name="FrameDx" value="6.000*cm"/>
+		<Constant name="FrameDy" value="0.03125*cm"/>
+		<Constant name="FrameDz" value="2.250*cm"/>
+		<Constant name="FrameY" value="0.05275*cm"/>
+		<Constant name="FrameZ" value="9.825*cm"/>
+		<Constant name="HybSupDx" value="3.500*cm"/>
+		<Constant name="HybSupDy" value="0.030*cm"/>
+		<Constant name="HybSupDz" value="1.665*cm"/>
+		<Constant name="HybSupY" value="0.115*cm"/>
+		<Constant name="HybSupZ" value="10.35*cm"/>
+		<Constant name="ModCool1Dx" value="0.800*cm"/>
+		<Constant name="ModCoolDy" value="0.015*cm"/>
+		<Constant name="ModCool1Dz" value="1.000*cm"/>
+		<Constant name="ModCool1X" value="5.200*cm"/>
+		<Constant name="ModCool1Y" value="0.069*cm"/>
+		<Constant name="ModCool1Z" value="2.125*cm"/>
+		<Constant name="ModCool2Dx" value="0.750*cm"/>
+		<Constant name="ModCool2Dz" value="1.400*cm"/>
+		<Constant name="ModCool2X" value="5.250*cm"/>
+		<Constant name="ModCool2Y" value="0.100*cm"/>
+		<Constant name="ModCool2Z" value="10.325*cm"/>
+		<Constant name="ModCoolComp1Dx" value="0.800*cm"/>
+		<Constant name="ModCoolCompDy" value="0.015*cm"/>
+		<Constant name="ModCoolComp1Dz" value="1.300*cm"/>
+		<Constant name="ModCoolComp1X" value="5.200*cm"/>
+		<Constant name="ModCoolComp1Y" value="0.039*cm"/>
+		<Constant name="ModCoolComp1Z" value="2.125*cm"/>
+		<Constant name="ModCoolComp2Dx" value="0.800*cm"/>
+		<Constant name="ModCoolComp2Dz" value="1.300*cm"/>
+		<Constant name="ModCoolComp2X" value="5.200*cm"/>
+		<Constant name="ModCoolComp2Y" value="0.130*cm"/>
+		<Constant name="ModCoolComp2Z" value="10.325*cm"/>
+		<Constant name="Tilt" value="5.7296*deg"/>
+		<Constant name="TiltX" value="(90.0*deg-[Tilt])"/>
+		<Constant name="WaferDx" value="4.818*cm"/>
+		<Constant name="WaferDy" value="9.450*cm"/>
+		<Constant name="WaferDz" value="0.025*cm"/>
+		<Constant name="WaferY" value="0.215*cm"/>
+		<Constant name="WaferZ" value="2.125*cm"/>
+		<Constant name="ActiveDx" value="4.6848*cm"/>
+		<Constant name="ActiveDy" value="9.3067*cm"/>
+		<Constant name="ActiveDz" value="[WaferDz]-[tracker:BackPlaneDz]"/>
+		<Constant name="InactiveDy" value="0.1553*cm"/>
+		<Constant name="GlueDx1" value="4.6848*cm"/>
+		<Constant name="GlueDx2" value="4.30*cm"/>
+		<Constant name="GlueDy" value="0.275*cm"/>
+		<Constant name="GlueDz" value="0.1*cm"/>
+		<Constant name="GlueSi1Y" value="0.340*cm"/>
+		<Constant name="GlueSi2Y" value="0.015*cm"/>
+		<Constant name="GluePAY" value="0.340*cm"/>
+		<Constant name="GluePAZ" value="7.435*cm"/>
+		<Constant name="PAX" value="[WaferDy]*sin([Tilt])"/>
+		<Constant name="GluePAX" value="[WaferDy]*sin([Tilt])"/>
+		<Constant name="PAYst" value="0.260*cm"/>
+		<Constant name="GluePAYst" value="0.390*cm"/>
+	</ConstantsSection>
+	<SolidSection label="tobmodpar.xml">
+		<Box name="TOBModule" dx="[tobmodpar:ModuleDx]" dy="[tobmodpar:ModuleDy]" dz="[tobmodpar:ModuleDz]"/>
+		<Box name="TOBHybrid" dx="[tobmodpar:HybridDx]" dy="[tobmodpar:HybridDy]" dz="[tobmodpar:HybridDz]"/>
+		<Box name="TOBWaferRphi" dx="[tobmodpar:WaferDx]" dy="[tobmodpar:WaferDy]" dz="[tobmodpar:WaferDz]"/>
+		<Box name="TOBActiveRphi" dx="[tobmodpar:ActiveDx]" dy="[tobmodpar:ActiveDy]" dz="[tobmodpar:ActiveDz]"/>
+		<Box name="TOBPA1" dx="[PADx]" dy="[PADy]" dz="[PA1Dz]"/>
+		<Trapezoid name="TOBPA2" dz="[PADx]" alp1="0*deg" bl1="[PA2Dz1]" tl1="[PA2Dz1]" h1="[PADy]" alp2="0*deg" bl2="[PA2Dz2]" tl2="[PA2Dz2]" h2="[PADy]" phi="0*deg" theta="[PA2Theta]"/>
+		<Box name="TOBEncapsulant1" dx="[GlueDx1]" dy="[GlueDy]" dz="[GlueDz]"/>
+		<Box name="TOBEncapsulant2" dx="[GlueDx2]" dy="[GlueDy]" dz="[GlueDz]"/>
+		<Box name="TOBEncapsulant3" dx="[GlueDx1]" dy="[GlueDy]*2" dz="[GlueDz]/2"/>
+		<Box name="TOBSideRailL" dx="[SideRailDx]" dy="[SideRailDy]" dz="[SideRailDz]"/>
+		<Box name="TOBSideRailR" dx="[SideRailDx]" dy="[SideRailDy]" dz="[SideRailDz]"/>
+		<Box name="TOBFrame" dx="[FrameDx]" dy="[FrameDy]" dz="[FrameDz]"/>
+		<Box name="TOBHybSup" dx="[HybSupDx]" dy="[HybSupDy]" dz="[HybSupDz]"/>
+		<Box name="TOBModCool1" dx="[ModCool1Dx]" dy="[ModCoolDy]" dz="[ModCool1Dz]"/>
+		<Box name="TOBModCool2" dx="[ModCool2Dx]" dy="[ModCoolDy]" dz="[ModCool2Dz]"/>
+		<Box name="TOBModCoolComp1" dx="[ModCoolComp1Dx]" dy="[ModCoolCompDy]" dz="[ModCoolComp1Dz]"/>
+		<Box name="TOBModCoolComp2" dx="[ModCoolComp2Dx]" dy="[ModCoolCompDy]" dz="[ModCoolComp2Dz]"/>
+		<Box name="TOBInactive" dx="[ActiveDx]" dy="[InactiveDy]" dz="[ActiveDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tobmodpar.xml">
+		<LogicalPart name="TOBPA1" category="unspecified">
+			<rSolid name="TOBPA1"/>
+			<rMaterial name="tobmaterial:TOB_PA_rphi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPA2" category="unspecified">
+			<rSolid name="TOBPA2"/>
+			<rMaterial name="tobmaterial:TOB_PA_ster"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPAEncaps" category="unspecified">
+			<rSolid name="TOBEncapsulant1"/>
+			<rMaterial name="tobmaterial:TOB_Sens_Interface"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPAEncapsSt" category="unspecified">
+			<rSolid name="TOBEncapsulant3"/>
+			<rMaterial name="tobmaterial:TOB_Sens_Interface"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideRailL" category="unspecified">
+			<rSolid name="TOBSideRailL"/>
+			<rMaterial name="tobmaterial:TOB_sid_rail1"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideRailR" category="unspecified">
+			<rSolid name="TOBSideRailR"/>
+			<rMaterial name="tobmaterial:TOB_sid_rail2"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideRailLst" category="unspecified">
+			<rSolid name="TOBSideRailL"/>
+			<rMaterial name="tobmaterial:TOB_sid_rail1st"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideRailRst" category="unspecified">
+			<rSolid name="TOBSideRailR"/>
+			<rMaterial name="tobmaterial:TOB_sid_rail2st"/>
+		</LogicalPart>
+		<LogicalPart name="TOBFrame" category="unspecified">
+			<rSolid name="TOBFrame"/>
+			<rMaterial name="tobmaterial:TOB_frame_ele"/>
+		</LogicalPart>
+		<LogicalPart name="TOBHybSup" category="unspecified">
+			<rSolid name="TOBHybSup"/>
+			<rMaterial name="tobmaterial:TOB_hybrid_supp"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCool1" category="unspecified">
+			<rSolid name="TOBModCool1"/>
+			<rMaterial name="tobmaterial:TOB_mod_cool1"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCool2" category="unspecified">
+			<rSolid name="TOBModCool2"/>
+			<rMaterial name="tobmaterial:TOB_mod_cool2"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCoolComp1" category="unspecified">
+			<rSolid name="TOBModCoolComp1"/>
+			<rMaterial name="tobmaterial:TOB_mod_comp"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCoolComp2" category="unspecified">
+			<rSolid name="TOBModCoolComp2"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TOBInactive" category="unspecified">
+			<rSolid name="TOBInactive"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSiEncaps" category="unspecified">
+			<rSolid name="TOBEncapsulant1"/>
+			<rMaterial name="tobmaterial:TOB_Sens_Interface"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSiBackEncaps" category="unspecified">
+			<rSolid name="TOBEncapsulant2"/>
+			<rMaterial name="trackermaterial:T_Silicone_Gel"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<RotationSection label="tobmodpar.xml">
+		<Rotation name="Rphi" thetaX="90*deg" phiX="0*deg" thetaY="0*deg" phiY="0*deg" thetaZ="-90*deg" phiZ="90*deg"/>
+		<Rotation name="Ster" thetaX="[TiltX]" phiX="180*deg" thetaY="[Tilt]" phiY="0*deg" thetaZ="90*deg" phiZ="90*deg"/>
+		<Rotation name="PA" thetaX="0*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="-90*deg" phiZ="0*deg"/>
+		<Rotation name="Activ" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="270*deg" thetaZ="0*deg" phiZ="0*deg"/>
+	</RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobmodule0.xml b/examples/DDCMS/data/tobmodule0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4141dffebc849d0e237903cfd50df7ed30519c93
--- /dev/null
+++ b/examples/DDCMS/data/tobmodule0.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobmodule0.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<SolidSection label="tobmodule0.xml">
+		<Box name="TOBModCool01" dx="[tobmodpar:ModCool1Dx]" dy="[tobmodpar:ModCoolDy]" dz="[tobmodpar:ModCool1Dz]"/>
+		<Box name="TOBModCool02" dx="[tobmodpar:ModCool2Dx]" dy="[tobmodpar:ModCoolDy]" dz="[tobmodpar:ModCool2Dz]"/>
+		<Box name="TOBWaferSter0" dx="[tobmodpar:WaferDx]" dy="[tobmodpar:WaferDy]" dz="[tobmodpar:WaferDz]"/>
+		<Box name="TOBActiveSter0" dx="[tobmodpar:ActiveDx]" dy="[tobmodpar:ActiveDy]" dz="[tobmodpar:ActiveDz]"/>
+		<Box name="TOBModCoolComp01" dx="[tobmodpar:ModCoolComp1Dx]" dy="[tobmodpar:ModCoolCompDy]" dz="[tobmodpar:ModCoolComp1Dz]"/>
+		<Box name="TOBModCoolComp02" dx="[tobmodpar:ModCoolComp2Dx]" dy="[tobmodpar:ModCoolCompDy]" dz="[tobmodpar:ModCoolComp2Dz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tobmodule0.xml">
+		<LogicalPart name="TOBModule0" category="unspecified">
+			<rSolid name="tobmodpar:TOBModule"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBHybrid0" category="unspecified">
+			<rSolid name="tobmodpar:TOBHybrid"/>
+			<rMaterial name="tobmaterial:TOB_ele12"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCool01" category="unspecified">
+			<rSolid name="TOBModCool01"/>
+			<rMaterial name="tobmaterial:TOB_mod_cool1"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCool02" category="unspecified">
+			<rSolid name="TOBModCool02"/>
+			<rMaterial name="tobmaterial:TOB_mod_cool2"/>
+		</LogicalPart>
+		<LogicalPart name="TOBWaferRphi0" category="unspecified">
+			<rSolid name="tobmodpar:TOBWaferRphi"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBActiveRphi0" category="unspecified">
+			<rSolid name="tobmodpar:TOBActiveRphi"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBWaferSter0" category="unspecified">
+			<rSolid name="TOBWaferSter0"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBActiveSter0" category="unspecified">
+			<rSolid name="TOBActiveSter0"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCoolComp01" category="unspecified">
+			<rSolid name="TOBModCoolComp01"/>
+			<rMaterial name="tobmaterial:TOB_mod_comp"/>
+		</LogicalPart>
+		<LogicalPart name="TOBModCoolComp02" category="unspecified">
+			<rSolid name="TOBModCoolComp02"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobmodule0.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBWaferRphi0"/>
+			<rChild name="tobmodule0:TOBActiveRphi0"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+			<rRotation name="tobmodpar:Activ"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBActiveRphi0"/>
+			<rChild name="tobmodpar:TOBInactive"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBWaferSter0"/>
+			<rChild name="tobmodule0:TOBActiveSter0"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+			<rRotation name="tobmodpar:Activ"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBActiveSter0"/>
+			<rChild name="tobmodpar:TOBInactive"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBWaferRphi0"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:WaferY]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBWaferSter0"/>
+			<rRotation name="tobmodpar:Ster"/>
+			<Translation x="[zero]" y="[tobmodpar:WaferY]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSiEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GlueSi1Y]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSiEncaps"/>
+			<rRotation name="tobmodpar:Ster"/>
+			<Translation x="[zero]" y="[tobmodpar:GlueSi1Y]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSiBackEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GlueSi2Y]" z="-[tobmodpar:WaferZ]-[tobmodpar:GlueDy]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSiBackEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="[tobmodpar:GlueSi2Y]" z="-[tobmodpar:WaferZ]+[tobmodpar:GlueDy]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBHybrid0"/>
+			<Translation x="[zero]" y="-[tobmodpar:HybridY]" z="[tobmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBHybrid0"/>
+			<Translation x="[zero]" y="[tobmodpar:HybridY]" z="[tobmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBPA1"/>
+			<Translation x="[zero]" y="-[tobmodpar:PAY]" z="[tobmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBPA2"/>
+			<rRotation name="tobmodpar:PA"/>
+			<Translation x="[tobmodpar:PAX]" y="[tobmodpar:PAYst]" z="[tobmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBPAEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GluePAY]" z="[tobmodpar:GluePAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBPAEncapsSt"/>
+			<rRotation name="tobmodpar:Ster"/>
+			<Translation x="[tobmodpar:GluePAX]" y="[tobmodpar:GluePAYst]" z="[tobmodpar:GluePAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSideRailL"/>
+			<Translation x="-[tobmodpar:SideRailX]" y="-[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSideRailR"/>
+			<Translation x="[tobmodpar:SideRailX]" y="-[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSideRailLst"/>
+			<Translation x="[tobmodpar:SideRailX]" y="[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBSideRailRst"/>
+			<Translation x="-[tobmodpar:SideRailX]" y="[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBFrame"/>
+			<Translation x="[zero]" y="-[tobmodpar:FrameY]" z="[tobmodpar:FrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBFrame"/>
+			<Translation x="[zero]" y="[tobmodpar:FrameY]" z="[tobmodpar:FrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBHybSup"/>
+			<Translation x="[zero]" y="-[tobmodpar:HybSupY]" z="[tobmodpar:HybSupZ]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBHybSup"/>
+			<Translation x="[zero]" y="[tobmodpar:HybSupY]" z="[tobmodpar:HybSupZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCool1"/>
+			<Translation x="-[tobmodpar:ModCool1X]" y="-[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCool1"/>
+			<Translation x="[tobmodpar:ModCool1X]" y="-[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCoolComp1"/>
+			<Translation x="-[tobmodpar:ModCoolComp1X]" y="-[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCoolComp1"/>
+			<Translation x="[tobmodpar:ModCoolComp1X]" y="-[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCool2"/>
+			<Translation x="-[tobmodpar:ModCool2X]" y="-[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCool2"/>
+			<Translation x="[tobmodpar:ModCool2X]" y="-[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCoolComp2"/>
+			<Translation x="-[tobmodpar:ModCoolComp2X]" y="-[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodpar:TOBModCoolComp2"/>
+			<Translation x="[tobmodpar:ModCoolComp2X]" y="-[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCool01"/>
+			<Translation x="-[tobmodpar:ModCool1X]" y="[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCool01"/>
+			<Translation x="[tobmodpar:ModCool1X]" y="[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCoolComp01"/>
+			<Translation x="-[tobmodpar:ModCoolComp1X]" y="[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCoolComp01"/>
+			<Translation x="[tobmodpar:ModCoolComp1X]" y="[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCool02"/>
+			<Translation x="-[tobmodpar:ModCool2X]" y="[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCool02"/>
+			<Translation x="[tobmodpar:ModCool2X]" y="[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCoolComp02"/>
+			<Translation x="-[tobmodpar:ModCoolComp2X]" y="[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule0:TOBModule0"/>
+			<rChild name="tobmodule0:TOBModCoolComp02"/>
+			<Translation x="[tobmodpar:ModCoolComp2X]" y="[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobmodule2.xml b/examples/DDCMS/data/tobmodule2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..279b548ba8b9bf247310e4a58b155d422fbb4533
--- /dev/null
+++ b/examples/DDCMS/data/tobmodule2.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobmodule2.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobmodule2.xml">
+		<LogicalPart name="TOBModule2" category="unspecified">
+			<rSolid name="tobmodpar:TOBModule"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBHybrid2" category="unspecified">
+			<rSolid name="tobmodpar:TOBHybrid"/>
+			<rMaterial name="tobmaterial:TOB_ele34"/>
+		</LogicalPart>
+		<LogicalPart name="TOBWaferRphi2" category="unspecified">
+			<rSolid name="tobmodpar:TOBWaferRphi"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBActiveRphi2" category="unspecified">
+			<rSolid name="tobmodpar:TOBActiveRphi"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobmodule2.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBWaferRphi2"/>
+			<rChild name="tobmodule2:TOBActiveRphi2"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+			<rRotation name="tobmodpar:Activ"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBActiveRphi2"/>
+			<rChild name="tobmodpar:TOBInactive"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodule2:TOBWaferRphi2"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:WaferY]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBSiEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GlueSi1Y]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBSiBackEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GlueSi2Y]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodule2:TOBHybrid2"/>
+			<Translation x="[zero]" y="-[tobmodpar:HybridY]" z="[tobmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBPA1"/>
+			<Translation x="[zero]" y="-[tobmodpar:PAY]" z="[tobmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBPAEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GluePAY]" z="[tobmodpar:GluePAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBSideRailL"/>
+			<Translation x="-[tobmodpar:SideRailX]" y="-[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBSideRailR"/>
+			<Translation x="[tobmodpar:SideRailX]" y="-[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBFrame"/>
+			<Translation x="[zero]" y="-[tobmodpar:FrameY]" z="[tobmodpar:FrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBHybSup"/>
+			<Translation x="[zero]" y="-[tobmodpar:HybSupY]" z="[tobmodpar:HybSupZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCool1"/>
+			<Translation x="-[tobmodpar:ModCool1X]" y="-[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCool1"/>
+			<Translation x="[tobmodpar:ModCool1X]" y="-[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCoolComp1"/>
+			<Translation x="-[tobmodpar:ModCoolComp1X]" y="-[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCoolComp1"/>
+			<Translation x="[tobmodpar:ModCoolComp1X]" y="-[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCool2"/>
+			<Translation x="-[tobmodpar:ModCool2X]" y="-[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCool2"/>
+			<Translation x="[tobmodpar:ModCool2X]" y="-[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCoolComp2"/>
+			<Translation x="-[tobmodpar:ModCoolComp2X]" y="-[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule2:TOBModule2"/>
+			<rChild name="tobmodpar:TOBModCoolComp2"/>
+			<Translation x="[tobmodpar:ModCoolComp2X]" y="-[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobmodule4.xml b/examples/DDCMS/data/tobmodule4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..552a871a3912087c1ac230ac896525c07809eafa
--- /dev/null
+++ b/examples/DDCMS/data/tobmodule4.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobmodule4.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobmodule4.xml">
+		<LogicalPart name="TOBModule4" category="unspecified">
+			<rSolid name="tobmodpar:TOBModule"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBHybrid4" category="unspecified">
+			<rSolid name="tobmodpar:TOBHybrid"/>
+			<rMaterial name="tobmaterial:TOB_ele56"/>
+		</LogicalPart>
+		<LogicalPart name="TOBWaferRphi4" category="unspecified">
+			<rSolid name="tobmodpar:TOBWaferRphi"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+		<LogicalPart name="TOBActiveRphi4" category="unspecified">
+			<rSolid name="tobmodpar:TOBActiveRphi"/>
+			<rMaterial name="materials:Silicon"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobmodule4.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBWaferRphi4"/>
+			<rChild name="tobmodule4:TOBActiveRphi4"/>
+			<Translation x="[zero]" y="[zero]" z="[tracker:BackPlaneDz]"/>
+			<rRotation name="tobmodpar:Activ"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBActiveRphi4"/>
+			<rChild name="tobmodpar:TOBInactive"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodule4:TOBWaferRphi4"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:WaferY]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBSiEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GlueSi1Y]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBSiBackEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GlueSi2Y]" z="-[tobmodpar:WaferZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodule4:TOBHybrid4"/>
+			<Translation x="[zero]" y="-[tobmodpar:HybridY]" z="[tobmodpar:HybridZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBPA1"/>
+			<Translation x="[zero]" y="-[tobmodpar:PAY]" z="[tobmodpar:PAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBPAEncaps"/>
+			<rRotation name="tobmodpar:Rphi"/>
+			<Translation x="[zero]" y="-[tobmodpar:GluePAY]" z="[tobmodpar:GluePAZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBSideRailL"/>
+			<Translation x="-[tobmodpar:SideRailX]" y="-[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBSideRailR"/>
+			<Translation x="[tobmodpar:SideRailX]" y="-[tobmodpar:SideRailY]" z="-[tobmodpar:SideRailZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBFrame"/>
+			<Translation x="[zero]" y="-[tobmodpar:FrameY]" z="[tobmodpar:FrameZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBHybSup"/>
+			<Translation x="[zero]" y="-[tobmodpar:HybSupY]" z="[tobmodpar:HybSupZ]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCool1"/>
+			<Translation x="-[tobmodpar:ModCool1X]" y="-[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCool1"/>
+			<Translation x="[tobmodpar:ModCool1X]" y="-[tobmodpar:ModCool1Y]" z="-[tobmodpar:ModCool1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCoolComp1"/>
+			<Translation x="-[tobmodpar:ModCoolComp1X]" y="-[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCoolComp1"/>
+			<Translation x="[tobmodpar:ModCoolComp1X]" y="-[tobmodpar:ModCoolComp1Y]" z="-[tobmodpar:ModCoolComp1Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCool2"/>
+			<Translation x="-[tobmodpar:ModCool2X]" y="-[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCool2"/>
+			<Translation x="[tobmodpar:ModCool2X]" y="-[tobmodpar:ModCool2Y]" z="[tobmodpar:ModCool2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCoolComp2"/>
+			<Translation x="-[tobmodpar:ModCoolComp2X]" y="-[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tobmodule4:TOBModule4"/>
+			<rChild name="tobmodpar:TOBModCoolComp2"/>
+			<Translation x="[tobmodpar:ModCoolComp2X]" y="-[tobmodpar:ModCoolComp2Y]" z="[tobmodpar:ModCoolComp2Z]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod0.xml b/examples/DDCMS/data/tobrod0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2fa93358cd924e889ce8fe1a3a6fe610fd66d860
--- /dev/null
+++ b/examples/DDCMS/data/tobrod0.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod0.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod0.xml">
+		<LogicalPart name="TOBRod0" category="unspecified">
+			<rSolid name="tobrodpar:TOBRod"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod0.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod0:TOBRod0"/>
+			<rChild name="tobrod0l:TOBRod0L"/>
+			<rRotation name="tobrodpar:R180"/>
+			<Translation x="[zero]" y="[zero]" z="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod0:TOBRod0"/>
+			<rChild name="tobrod0h:TOBRod0H"/>
+			<rRotation name="tobrodpar:R180"/>
+			<Translation x="[zero]" y="[zero]" z="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod0c.xml b/examples/DDCMS/data/tobrod0c.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4f39d1a11157ec59622886744059352bc225ec0b
--- /dev/null
+++ b/examples/DDCMS/data/tobrod0c.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod0c.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<SolidSection label="tobrod0c.xml">
+		<Tubs name="TOBSideCoolTube0" rMin="[zero]" rMax="[tobrodpar:CoolTubeHeavyR]" dz="[tobrodpar:SideCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBSideCoolFluid0" rMin="[zero]" rMax="[tobrodpar:CoolFluidHeavyR]" dz="[tobrodpar:SideCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBEndCoolTube0" rMin="[zero]" rMax="[tobrodpar:CoolTubeHeavyR]" dz="[tobrodpar:EndCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBEndCoolFluid0" rMin="[zero]" rMax="[tobrodpar:CoolFluidHeavyR]" dz="[tobrodpar:EndCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Box name="TOBOptFibre0" dx="[tobrodpar:OptFibreW]" dy="[tobrodpar:OptFibreH]" dz="[tobrodpar:OptFibreL]"/>
+		<Box name="TOBPlate01" dx="[tobrodpar:SideClampDx]" dy="[tobrodpar:SideClampDy]" dz="[tobrodpar:SideClampHDz]"/>
+		<Box name="TOBPlate02" dx="[tobrodpar:SideClampDx]" dy="[tobrodpar:SideClampDy]" dz="[tobrodpar:SideClampHDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tobrod0c.xml">
+		<LogicalPart name="TOBSideCoolTube0" category="unspecified">
+			<rSolid name="TOBSideCoolTube0"/>
+			<rMaterial name="trackermaterial:T_CuNi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideCoolFluid0" category="unspecified">
+			<rSolid name="TOBSideCoolFluid0"/>
+			<rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndCoolTube0" category="unspecified">
+			<rSolid name="TOBEndCoolTube0"/>
+			<rMaterial name="trackermaterial:T_CuNi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndCoolFluid0" category="unspecified">
+			<rSolid name="TOBEndCoolFluid0"/>
+			<rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBOptFibre0" category="unspecified">
+			<rSolid name="TOBOptFibre0"/>
+			<rMaterial name="tobmaterial:TOB_optfib_L12"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPlate01" category="unspecified">
+			<rSolid name="TOBPlate01"/>
+			<rMaterial name="tobmaterial:TOB_plate_B"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPlate02" category="unspecified">
+			<rSolid name="TOBPlate02"/>
+			<rMaterial name="tobmaterial:TOB_plate_C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBICC01" category="unspecified">
+			<rSolid name="tobrodpar:TOBICC1"/>
+			<rMaterial name="tobmaterial:TOB_L12_ICC1"/>
+		</LogicalPart>
+		<LogicalPart name="TOBICC02" category="unspecified">
+			<rSolid name="tobrodpar:TOBICC2"/>
+			<rMaterial name="tobmaterial:TOB_L12_ICC2"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodConn0" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodConn"/>
+			<rMaterial name="tobmaterial:TOB_CONN12"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCCUM0" category="unspecified">
+			<rSolid name="tobrodpar:TOBCCUM"/>
+			<rMaterial name="tobmaterial:TOB_CCUM"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod0c.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod0c:TOBSideCoolTube0"/>
+			<rChild name="tobrod0c:TOBSideCoolFluid0"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod0c:TOBEndCoolTube0"/>
+			<rChild name="tobrod0c:TOBEndCoolFluid0"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod0h.xml b/examples/DDCMS/data/tobrod0h.xml
new file mode 100644
index 0000000000000000000000000000000000000000..05c2422e926e518ed4d487747d7c277bf65b0dd5
--- /dev/null
+++ b/examples/DDCMS/data/tobrod0h.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod0h.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod0h.xml">
+		<LogicalPart name="TOBRod0H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral0H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod0h.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod0h:TOBRod0H"/>
+			<rChild name="tobrod0h:TOBRodCentral0H"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod0h:TOBRod0H"/>
+		<Numeric name="Shift" value="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod0h:TOBRodCentral0H"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			[tobrodpar:RodY],     -[tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],                [tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			[tobrodpar:EndRod1Z],  [tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="-[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			[tobrodpar:ClampZ2],  [tobrodpar:ClampZ1],  [tobrodpar:ClampZ2],
+			[tobrodpar:ClampZ1]
+		</Vector>
+		<String name="SideCoolName" value="tobrod0c:TOBSideCoolTube0"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolY],  -[tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolZ],  [tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod0c:TOBEndCoolTube0"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="-[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod0c:TOBOptFibre0"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			[tobrodpar:OptFibreZ],  [tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod0c:TOBPlate01"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod0c:TOBPlate02"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule0:TOBModule0"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:NULL, tobrodpar:NULL,
+			tobrodpar:NULL, tobrodpar:180D, tobrodpar:180D</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ07], [tobrodpar:ModuleZ08], [tobrodpar:ModuleZ09],
+			[tobrodpar:ModuleZ10], [tobrodpar:ModuleZ11], [tobrodpar:ModuleZ12]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod0c:TOBICC01, tobrod0c:TOBICC01, tobrod0c:TOBICC02, 
+			tobrod0c:TOBICC02, tobrod0c:TOBCCUM0, tobrod0c:TOBRodConn0
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			[tobrodpar:ICCY1], -[tobrodpar:ICCY1],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY2],  [tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ07], [tobrodpar:ICCZ08], [tobrodpar:ICCZ09],
+			[tobrodpar:ICCZ10], [tobrodpar:ICCZ11], [tobrodpar:ICCZ12]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			2 , 2 , 4 , 4 , 0 , 0
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			-[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx]  , [tobrodpar:AOHx] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod0l.xml b/examples/DDCMS/data/tobrod0l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a2f04044e8267d1bb6242c4831c2fb349ba93362
--- /dev/null
+++ b/examples/DDCMS/data/tobrod0l.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod0l.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod0l.xml">
+		<LogicalPart name="TOBRod0L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral0L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod0l.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod0l:TOBRod0L"/>
+			<rChild name="tobrod0l:TOBRodCentral0L"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod0l:TOBRod0L"/>
+		<Numeric name="Shift" value="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod0l:TOBRodCentral0L"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],               -[tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			-[tobrodpar:EndRod1Z], -[tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="-[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="-[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			-[tobrodpar:ClampZ1], -[tobrodpar:ClampZ2], -[tobrodpar:ClampZ1],
+			-[tobrodpar:ClampZ2]
+		</Vector>
+		<String name="SideCoolName" value="tobrod0c:TOBSideCoolTube0"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolY],  [tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolZ], -[tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod0c:TOBEndCoolTube0"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="-[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod0c:TOBOptFibre0"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreZ], -[tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod0c:TOBPlate01"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod0c:TOBPlate02"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule0:TOBModule0"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:NULL, tobrodpar:180D, 
+			tobrodpar:180D, tobrodpar:180D, tobrodpar:180D</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ01], [tobrodpar:ModuleZ02], [tobrodpar:ModuleZ03],
+			[tobrodpar:ModuleZ04], [tobrodpar:ModuleZ05], [tobrodpar:ModuleZ06]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod0c:TOBRodConn0, tobrod0c:TOBCCUM0, tobrod0c:TOBICC02, 
+			tobrod0c:TOBICC02, tobrod0c:TOBICC01, tobrod0c:TOBICC01
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			-[tobrodpar:ICCY1], -[tobrodpar:ICCY2],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY1], -[tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ01], [tobrodpar:ICCZ02], [tobrodpar:ICCZ03],
+			[tobrodpar:ICCZ04], [tobrodpar:ICCZ05], [tobrodpar:ICCZ06]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			0 , 0 , 4 , 4 , 2 , 2
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx] , -[tobrodpar:AOHx]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod1.xml b/examples/DDCMS/data/tobrod1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a92e39745067961d1d9bd048d889f888a17dda7b
--- /dev/null
+++ b/examples/DDCMS/data/tobrod1.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod1.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod1.xml">
+		<LogicalPart name="TOBRod1" category="unspecified">
+			<rSolid name="tobrodpar:TOBRod"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod1.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod1:TOBRod1"/>
+			<rChild name="tobrod1l:TOBRod1L"/>
+			<rRotation name="tobrodpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod1:TOBRod1"/>
+			<rChild name="tobrod1h:TOBRod1H"/>
+			<rRotation name="tobrodpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod1h.xml b/examples/DDCMS/data/tobrod1h.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd8ad1384cb8a1e770179d461dc77a2843e0cf7e
--- /dev/null
+++ b/examples/DDCMS/data/tobrod1h.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod1h.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod1h.xml">
+		<LogicalPart name="TOBRod1H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral1H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod1h.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod1h:TOBRod1H"/>
+			<rChild name="tobrod1h:TOBRodCentral1H"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod1h:TOBRod1H"/>
+		<Numeric name="Shift" value="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod1h:TOBRodCentral1H"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			[tobrodpar:RodY],     -[tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],                [tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			[tobrodpar:EndRod1Z],  [tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="-[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			[tobrodpar:ClampZ2],  [tobrodpar:ClampZ1],  [tobrodpar:ClampZ2],
+			[tobrodpar:ClampZ1]
+		</Vector>
+		<String name="SideCoolName" value="tobrod0c:TOBSideCoolTube0"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolY],  -[tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolZ],  [tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod0c:TOBEndCoolTube0"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="-[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod0c:TOBOptFibre0"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			[tobrodpar:OptFibreZ],  [tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod0c:TOBPlate01"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod0c:TOBPlate02"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule0:TOBModule0"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:R180, tobrodpar:R180, tobrodpar:R180,
+			tobrodpar:R180, tobrodpar:180X, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ07], [tobrodpar:ModuleZ08], [tobrodpar:ModuleZ09],
+			[tobrodpar:ModuleZ10], [tobrodpar:ModuleZ11], [tobrodpar:ModuleZ12]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod0c:TOBICC01, tobrod0c:TOBICC01, tobrod0c:TOBICC02, 
+			tobrod0c:TOBICC02, tobrod0c:TOBCCUM0, tobrod0c:TOBRodConn0
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			[tobrodpar:ICCY1], -[tobrodpar:ICCY1],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY2],  [tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ07], [tobrodpar:ICCZ08], [tobrodpar:ICCZ09],
+			[tobrodpar:ICCZ10], [tobrodpar:ICCZ11], [tobrodpar:ICCZ12]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			2 , 2 , 4 , 4 , 0 , 0
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			-[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx]  , [tobrodpar:AOHx] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod1l.xml b/examples/DDCMS/data/tobrod1l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..776006d8319431a51d57ca63993e99237072b62c
--- /dev/null
+++ b/examples/DDCMS/data/tobrod1l.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod1l.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod1l.xml">
+		<LogicalPart name="TOBRod1L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral1L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod1l.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod1l:TOBRod1L"/>
+			<rChild name="tobrod1l:TOBRodCentral1L"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod1l:TOBRod1L"/>
+		<Numeric name="Shift" value="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod1l:TOBRodCentral1L"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],               -[tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			-[tobrodpar:EndRod1Z], -[tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="-[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="-[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			-[tobrodpar:ClampZ1], -[tobrodpar:ClampZ2], -[tobrodpar:ClampZ1],
+			-[tobrodpar:ClampZ2]
+		</Vector>
+		<String name="SideCoolName" value="tobrod0c:TOBSideCoolTube0"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolY],  [tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolZ], -[tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod0c:TOBEndCoolTube0"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="-[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod0c:TOBOptFibre0"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreZ], -[tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod0c:TOBPlate01"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod0c:TOBPlate02"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule0:TOBModule0"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:R180, tobrodpar:R180, tobrodpar:180X, 
+			tobrodpar:180X, tobrodpar:180X, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ01], [tobrodpar:ModuleZ02], [tobrodpar:ModuleZ03],
+			[tobrodpar:ModuleZ04], [tobrodpar:ModuleZ05], [tobrodpar:ModuleZ06]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod0c:TOBRodConn0, tobrod0c:TOBCCUM0, tobrod0c:TOBICC02, 
+			tobrod0c:TOBICC02, tobrod0c:TOBICC01, tobrod0c:TOBICC01
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			-[tobrodpar:ICCY1], -[tobrodpar:ICCY2],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY1], -[tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ01], [tobrodpar:ICCZ02], [tobrodpar:ICCZ03],
+			[tobrodpar:ICCZ04], [tobrodpar:ICCZ05], [tobrodpar:ICCZ06]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			0 , 0 , 4 , 4 , 2 , 2
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx] , -[tobrodpar:AOHx]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod2.xml b/examples/DDCMS/data/tobrod2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4328e1110867bf1432725e53210b4e68737dbc83
--- /dev/null
+++ b/examples/DDCMS/data/tobrod2.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod2.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod2.xml">
+		<LogicalPart name="TOBRod2" category="unspecified">
+			<rSolid name="tobrodpar:TOBRod"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod2.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod2:TOBRod2"/>
+			<rChild name="tobrod2l:TOBRod2L"/>
+			<rRotation name="tobrodpar:R180"/>
+			<Translation x="[zero]" y="[zero]" z="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod2:TOBRod2"/>
+			<rChild name="tobrod2h:TOBRod2H"/>
+			<rRotation name="tobrodpar:R180"/>
+			<Translation x="[zero]" y="[zero]" z="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod2c.xml b/examples/DDCMS/data/tobrod2c.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0ff8d42bd623422b85f5954b8170d844c163871e
--- /dev/null
+++ b/examples/DDCMS/data/tobrod2c.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod2c.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<SolidSection label="tobrod2c.xml">
+		<Tubs name="TOBSideCoolTube2" rMin="[zero]" rMax="[tobrodpar:CoolTubeLightR]" dz="[tobrodpar:SideCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBSideCoolFluid2" rMin="[zero]" rMax="[tobrodpar:CoolFluidLightR]" dz="[tobrodpar:SideCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBEndCoolTube2" rMin="[zero]" rMax="[tobrodpar:CoolTubeLightR]" dz="[tobrodpar:EndCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBEndCoolFluid2" rMin="[zero]" rMax="[tobrodpar:CoolFluidLightR]" dz="[tobrodpar:EndCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Box name="TOBOptFibre2" dx="[tobrodpar:OptFibreW]" dy="[tobrodpar:OptFibreH]" dz="[tobrodpar:OptFibreL]"/>
+		<Box name="TOBPlate21" dx="[tobrodpar:SideClampDx]" dy="[tobrodpar:SideClampDy]" dz="[tobrodpar:SideClampLDz]"/>
+		<Box name="TOBPlate22" dx="[tobrodpar:SideClampDx]" dy="[tobrodpar:SideClampDy]" dz="[tobrodpar:SideClampLDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tobrod2c.xml">
+		<LogicalPart name="TOBSideCoolTube2" category="unspecified">
+			<rSolid name="TOBSideCoolTube2"/>
+			<rMaterial name="trackermaterial:T_CuNi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideCoolFluid2" category="unspecified">
+			<rSolid name="TOBSideCoolFluid2"/>
+			<rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndCoolTube2" category="unspecified">
+			<rSolid name="TOBEndCoolTube2"/>
+			<rMaterial name="trackermaterial:T_CuNi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndCoolFluid2" category="unspecified">
+			<rSolid name="TOBEndCoolFluid2"/>
+			<rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBOptFibre2" category="unspecified">
+			<rSolid name="TOBOptFibre2"/>
+			<rMaterial name="tobmaterial:TOB_optfib_L34"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPlate21" category="unspecified">
+			<rSolid name="TOBPlate21"/>
+			<rMaterial name="tobmaterial:TOB_plate_B"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPlate22" category="unspecified">
+			<rSolid name="TOBPlate22"/>
+			<rMaterial name="tobmaterial:TOB_plate_C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBICC21" category="unspecified">
+			<rSolid name="tobrodpar:TOBICC1"/>
+			<rMaterial name="tobmaterial:TOB_L34_ICC1"/>
+		</LogicalPart>
+		<LogicalPart name="TOBICC22" category="unspecified">
+			<rSolid name="tobrodpar:TOBICC2"/>
+			<rMaterial name="tobmaterial:TOB_L34_ICC2"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodConn2" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodConn"/>
+			<rMaterial name="tobmaterial:TOB_CONN34"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCCUM2" category="unspecified">
+			<rSolid name="tobrodpar:TOBCCUM"/>
+			<rMaterial name="tobmaterial:TOB_CCUM"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod2c.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod2c:TOBSideCoolTube2"/>
+			<rChild name="tobrod2c:TOBSideCoolFluid2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod2c:TOBEndCoolTube2"/>
+			<rChild name="tobrod2c:TOBEndCoolFluid2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod2h.xml b/examples/DDCMS/data/tobrod2h.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f84dcc6d596465cb946588a0fc8fe091cfde122a
--- /dev/null
+++ b/examples/DDCMS/data/tobrod2h.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod2h.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod2h.xml">
+		<LogicalPart name="TOBRod2H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral2H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod2h.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod2h:TOBRod2H"/>
+			<rChild name="tobrod2h:TOBRodCentral2H"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod2h:TOBRod2H"/>
+		<Numeric name="Shift" value="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod2h:TOBRodCentral2H"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			[tobrodpar:RodY],     -[tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],                [tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			[tobrodpar:EndRod1Z],  [tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="-[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			[tobrodpar:ClampZ2],  [tobrodpar:ClampZ1],  [tobrodpar:ClampZ2],
+			[tobrodpar:ClampZ1]
+		</Vector>
+		<String name="SideCoolName" value="tobrod2c:TOBSideCoolTube2"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolY],  -[tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolZ],  [tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod2c:TOBEndCoolTube2"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="-[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod2c:TOBOptFibre2"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			[tobrodpar:OptFibreZ],  [tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod2c:TOBPlate21"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod2c:TOBPlate22"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule2:TOBModule2"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:NULL, 
+			tobrodpar:R180, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ07], [tobrodpar:ModuleZ08], [tobrodpar:ModuleZ09],
+			[tobrodpar:ModuleZ10], [tobrodpar:ModuleZ11], [tobrodpar:ModuleZ12]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod2c:TOBICC21, tobrod2c:TOBICC21, tobrod2c:TOBICC22, 
+			tobrod2c:TOBICC22, tobrod2c:TOBCCUM2, tobrod2c:TOBRodConn2
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			[tobrodpar:ICCY1], -[tobrodpar:ICCY1],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY2],  [tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ07], [tobrodpar:ICCZ08], [tobrodpar:ICCZ09],
+			[tobrodpar:ICCZ10], [tobrodpar:ICCZ11], [tobrodpar:ICCZ12]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			1 , 1 , 2 , 2 , 0 , 0
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			-[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx]  , [tobrodpar:AOHx] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod2l.xml b/examples/DDCMS/data/tobrod2l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7463b9812cb60df35053ba08c0d523564aee190
--- /dev/null
+++ b/examples/DDCMS/data/tobrod2l.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod2l.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod2l.xml">
+		<LogicalPart name="TOBRod2L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral2L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod2l.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod2l:TOBRod2L"/>
+			<rChild name="tobrod2l:TOBRodCentral2L"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod2l:TOBRod2L"/>
+		<Numeric name="Shift" value="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod2l:TOBRodCentral2L"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],               -[tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			-[tobrodpar:EndRod1Z], -[tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="-[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="-[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			-[tobrodpar:ClampZ1], -[tobrodpar:ClampZ2], -[tobrodpar:ClampZ1],
+			-[tobrodpar:ClampZ2]
+		</Vector>
+		<String name="SideCoolName" value="tobrod2c:TOBSideCoolTube2"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolY],  [tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolZ], -[tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod2c:TOBEndCoolTube2"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="-[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod2c:TOBOptFibre2"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreZ], -[tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod2c:TOBPlate21"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod2c:TOBPlate22"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule2:TOBModule2"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:180D,
+			tobrodpar:180X, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ01], [tobrodpar:ModuleZ02], [tobrodpar:ModuleZ03],
+			[tobrodpar:ModuleZ04], [tobrodpar:ModuleZ05], [tobrodpar:ModuleZ06]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod2c:TOBRodConn2, tobrod2c:TOBCCUM2, tobrod2c:TOBICC22, 
+			tobrod2c:TOBICC22, tobrod2c:TOBICC21, tobrod2c:TOBICC21
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			-[tobrodpar:ICCY1], -[tobrodpar:ICCY2],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY1], -[tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ01], [tobrodpar:ICCZ02], [tobrodpar:ICCZ03],
+			[tobrodpar:ICCZ04], [tobrodpar:ICCZ05], [tobrodpar:ICCZ06]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			0 , 0 , 2 , 2 , 1 , 1
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx] , -[tobrodpar:AOHx]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod3.xml b/examples/DDCMS/data/tobrod3.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8e7c0bffbb4e6a6235a21e6e08b4bef74f55203a
--- /dev/null
+++ b/examples/DDCMS/data/tobrod3.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod3.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod3.xml">
+		<LogicalPart name="TOBRod3" category="unspecified">
+			<rSolid name="tobrodpar:TOBRod"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod3.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod3:TOBRod3"/>
+			<rChild name="tobrod3l:TOBRod3L"/>
+			<rRotation name="tobrodpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod3:TOBRod3"/>
+			<rChild name="tobrod3h:TOBRod3H"/>
+			<rRotation name="tobrodpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod3h.xml b/examples/DDCMS/data/tobrod3h.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0a409cb96e904c413711155349ddd8710f2b1f5e
--- /dev/null
+++ b/examples/DDCMS/data/tobrod3h.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod3h.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod3h.xml">
+		<LogicalPart name="TOBRod3H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral3H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod3h.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod3h:TOBRod3H"/>
+			<rChild name="tobrod3h:TOBRodCentral3H"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod3h:TOBRod3H"/>
+		<Numeric name="Shift" value="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod3h:TOBRodCentral3H"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			[tobrodpar:RodY],     -[tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],                [tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			[tobrodpar:EndRod1Z],  [tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="-[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			[tobrodpar:ClampZ2],  [tobrodpar:ClampZ1],  [tobrodpar:ClampZ2],
+			[tobrodpar:ClampZ1]
+		</Vector>
+		<String name="SideCoolName" value="tobrod2c:TOBSideCoolTube2"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolY],  -[tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolZ],  [tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod2c:TOBEndCoolTube2"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="-[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod2c:TOBOptFibre2"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			[tobrodpar:OptFibreZ],  [tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod2c:TOBPlate21"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod2c:TOBPlate22"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule2:TOBModule2"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:NULL, 
+			tobrodpar:R180, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ07], [tobrodpar:ModuleZ08], [tobrodpar:ModuleZ09],
+			[tobrodpar:ModuleZ10], [tobrodpar:ModuleZ11], [tobrodpar:ModuleZ12]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod2c:TOBICC21, tobrod2c:TOBICC21, tobrod2c:TOBICC22, 
+			tobrod2c:TOBICC22, tobrod2c:TOBCCUM2, tobrod2c:TOBRodConn2
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			[tobrodpar:ICCY1], -[tobrodpar:ICCY1],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY2],  [tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ07], [tobrodpar:ICCZ08], [tobrodpar:ICCZ09],
+			[tobrodpar:ICCZ10], [tobrodpar:ICCZ11], [tobrodpar:ICCZ12]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			1 , 1 , 2 , 2 , 0 , 0
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			-[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx]  , [tobrodpar:AOHx] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod3l.xml b/examples/DDCMS/data/tobrod3l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3683bac4aaa20b10fbc71b7fcdebbe906a662138
--- /dev/null
+++ b/examples/DDCMS/data/tobrod3l.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod3l.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod3l.xml">
+		<LogicalPart name="TOBRod3L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral3L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod3l.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod3l:TOBRod3L"/>
+			<rChild name="tobrod3l:TOBRodCentral3L"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod3l:TOBRod3L"/>
+		<Numeric name="Shift" value="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod3l:TOBRodCentral3L"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],               -[tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			-[tobrodpar:EndRod1Z], -[tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="-[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="-[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			-[tobrodpar:ClampZ1], -[tobrodpar:ClampZ2], -[tobrodpar:ClampZ1],
+			-[tobrodpar:ClampZ2]
+		</Vector>
+		<String name="SideCoolName" value="tobrod2c:TOBSideCoolTube2"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolY],  [tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolZ], -[tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod2c:TOBEndCoolTube2"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="-[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod2c:TOBOptFibre2"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreZ], -[tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod2c:TOBPlate21"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod2c:TOBPlate22"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule2:TOBModule2"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:180D,
+			tobrodpar:180X, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ01], [tobrodpar:ModuleZ02], [tobrodpar:ModuleZ03],
+			[tobrodpar:ModuleZ04], [tobrodpar:ModuleZ05], [tobrodpar:ModuleZ06]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod2c:TOBRodConn2, tobrod2c:TOBCCUM2, tobrod2c:TOBICC22, 
+			tobrod2c:TOBICC22, tobrod2c:TOBICC21, tobrod2c:TOBICC21
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			-[tobrodpar:ICCY1], -[tobrodpar:ICCY2],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY1], -[tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ01], [tobrodpar:ICCZ02], [tobrodpar:ICCZ03],
+			[tobrodpar:ICCZ04], [tobrodpar:ICCZ05], [tobrodpar:ICCZ06]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			0 , 0 , 2 , 2 , 1 , 1
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx] , -[tobrodpar:AOHx]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod4.xml b/examples/DDCMS/data/tobrod4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8720763f42ec1301e29888c0a0341967d14d9cdd
--- /dev/null
+++ b/examples/DDCMS/data/tobrod4.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod4.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod4.xml">
+		<LogicalPart name="TOBRod4" category="unspecified">
+			<rSolid name="tobrodpar:TOBRod"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod4.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod4:TOBRod4"/>
+			<rChild name="tobrod4l:TOBRod4L"/>
+			<rRotation name="tobrodpar:R180"/>
+			<Translation x="[zero]" y="[zero]" z="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod4:TOBRod4"/>
+			<rChild name="tobrod4h:TOBRod4H"/>
+			<rRotation name="tobrodpar:R180"/>
+			<Translation x="[zero]" y="[zero]" z="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod4c.xml b/examples/DDCMS/data/tobrod4c.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee8b86f3ff13e069af7ba6d2bb90b4de34838295
--- /dev/null
+++ b/examples/DDCMS/data/tobrod4c.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod4c.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<SolidSection label="tobrod4c.xml">
+		<Tubs name="TOBSideCoolTube4" rMin="[zero]" rMax="[tobrodpar:CoolTubeLightR]" dz="[tobrodpar:SideCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBSideCoolFluid4" rMin="[zero]" rMax="[tobrodpar:CoolFluidLightR]" dz="[tobrodpar:SideCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBEndCoolTube4" rMin="[zero]" rMax="[tobrodpar:CoolTubeLightR]" dz="[tobrodpar:EndCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TOBEndCoolFluid4" rMin="[zero]" rMax="[tobrodpar:CoolFluidLightR]" dz="[tobrodpar:EndCoolL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Box name="TOBOptFibre4" dx="[tobrodpar:OptFibreW]" dy="[tobrodpar:OptFibreH]" dz="[tobrodpar:OptFibreL]"/>
+		<Box name="TOBPlate41" dx="[tobrodpar:SideClampDx]" dy="[tobrodpar:SideClampDy]" dz="[tobrodpar:SideClampLDz]"/>
+		<Box name="TOBPlate42" dx="[tobrodpar:SideClampDx]" dy="[tobrodpar:SideClampDy]" dz="[tobrodpar:SideClampLDz]"/>
+	</SolidSection>
+	<LogicalPartSection label="tobrod4c.xml">
+		<LogicalPart name="TOBSideCoolTube4" category="unspecified">
+			<rSolid name="TOBSideCoolTube4"/>
+			<rMaterial name="trackermaterial:T_CuNi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideCoolFluid4" category="unspecified">
+			<rSolid name="TOBSideCoolFluid4"/>
+			<rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndCoolTube4" category="unspecified">
+			<rSolid name="TOBEndCoolTube4"/>
+			<rMaterial name="trackermaterial:T_CuNi"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndCoolFluid4" category="unspecified">
+			<rSolid name="TOBEndCoolFluid4"/>
+			<rMaterial name="trackermaterial:T_C6F14_F2_-30C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBOptFibre4" category="unspecified">
+			<rSolid name="TOBOptFibre4"/>
+			<rMaterial name="tobmaterial:TOB_optfib_L56"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPlate41" category="unspecified">
+			<rSolid name="TOBPlate41"/>
+			<rMaterial name="tobmaterial:TOB_plate_B"/>
+		</LogicalPart>
+		<LogicalPart name="TOBPlate42" category="unspecified">
+			<rSolid name="TOBPlate42"/>
+			<rMaterial name="tobmaterial:TOB_plate_C"/>
+		</LogicalPart>
+		<LogicalPart name="TOBICC41" category="unspecified">
+			<rSolid name="tobrodpar:TOBICC1"/>
+			<rMaterial name="tobmaterial:TOB_L56_ICC1"/>
+		</LogicalPart>
+		<LogicalPart name="TOBICC42" category="unspecified">
+			<rSolid name="tobrodpar:TOBICC2"/>
+			<rMaterial name="tobmaterial:TOB_L56_ICC2"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodConn4" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodConn"/>
+			<rMaterial name="tobmaterial:TOB_CONN56"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCCUM4" category="unspecified">
+			<rSolid name="tobrodpar:TOBCCUM"/>
+			<rMaterial name="tobmaterial:TOB_CCUM"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod4c.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod4c:TOBSideCoolTube4"/>
+			<rChild name="tobrod4c:TOBSideCoolFluid4"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod4c:TOBEndCoolTube4"/>
+			<rChild name="tobrod4c:TOBEndCoolFluid4"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod4h.xml b/examples/DDCMS/data/tobrod4h.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6e46ad47b4411e54346f25b6a34c1cfefde2e74
--- /dev/null
+++ b/examples/DDCMS/data/tobrod4h.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod4h.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod4h.xml">
+		<LogicalPart name="TOBRod4H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral4H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod4h.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod4h:TOBRod4H"/>
+			<rChild name="tobrod4h:TOBRodCentral4H"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod4h:TOBRod4H"/>
+		<Numeric name="Shift" value="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod4h:TOBRodCentral4H"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			[tobrodpar:RodY],     -[tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],                [tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			[tobrodpar:EndRod1Z],  [tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="-[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			[tobrodpar:ClampZ2],  [tobrodpar:ClampZ1],  [tobrodpar:ClampZ2],
+			[tobrodpar:ClampZ1]
+		</Vector>
+		<String name="SideCoolName" value="tobrod4c:TOBSideCoolTube4"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolY],  -[tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolZ],  [tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod4c:TOBEndCoolTube4"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="-[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod4c:TOBOptFibre4"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			[tobrodpar:OptFibreZ],  [tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod4c:TOBPlate41"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod4c:TOBPlate42"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule4:TOBModule4"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:NULL, 
+			tobrodpar:R180, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ07], [tobrodpar:ModuleZ08], [tobrodpar:ModuleZ09],
+			[tobrodpar:ModuleZ10], [tobrodpar:ModuleZ11], [tobrodpar:ModuleZ12]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod4c:TOBICC41, tobrod4c:TOBICC41, tobrod4c:TOBICC42, 
+			tobrod4c:TOBICC42, tobrod4c:TOBCCUM4, tobrod4c:TOBRodConn4
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			[tobrodpar:ICCY1], -[tobrodpar:ICCY1],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY2],  [tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ07], [tobrodpar:ICCZ08], [tobrodpar:ICCZ09],
+			[tobrodpar:ICCZ10], [tobrodpar:ICCZ11], [tobrodpar:ICCZ12]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			1 , 1 , 2 , 2 , 0 , 0
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			-[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx]  , [tobrodpar:AOHx] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod4l.xml b/examples/DDCMS/data/tobrod4l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3402a4469d56337ea5a2ebe9645421fd75953189
--- /dev/null
+++ b/examples/DDCMS/data/tobrod4l.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod4l.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod4l.xml">
+		<LogicalPart name="TOBRod4L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral4L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod4l.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod4l:TOBRod4L"/>
+			<rChild name="tobrod4l:TOBRodCentral4L"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod4l:TOBRod4L"/>
+		<Numeric name="Shift" value="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod4l:TOBRodCentral4L"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],               -[tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			-[tobrodpar:EndRod1Z], -[tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="-[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="-[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			-[tobrodpar:ClampZ1], -[tobrodpar:ClampZ2], -[tobrodpar:ClampZ1],
+			-[tobrodpar:ClampZ2]
+		</Vector>
+		<String name="SideCoolName" value="tobrod4c:TOBSideCoolTube4"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolY],  [tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolZ], -[tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod4c:TOBEndCoolTube4"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="-[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod4c:TOBOptFibre4"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreZ], -[tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod4c:TOBPlate41"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod4c:TOBPlate42"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule4:TOBModule4"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:180D,
+			tobrodpar:180X, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ01], [tobrodpar:ModuleZ02], [tobrodpar:ModuleZ03],
+			[tobrodpar:ModuleZ04], [tobrodpar:ModuleZ05], [tobrodpar:ModuleZ06]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod4c:TOBRodConn4, tobrod4c:TOBCCUM4, tobrod4c:TOBICC42, 
+			tobrod4c:TOBICC42, tobrod4c:TOBICC41, tobrod4c:TOBICC41
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			-[tobrodpar:ICCY1], -[tobrodpar:ICCY2],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY1], -[tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ01], [tobrodpar:ICCZ02], [tobrodpar:ICCZ03],
+			[tobrodpar:ICCZ04], [tobrodpar:ICCZ05], [tobrodpar:ICCZ06]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			0 , 0 , 2 , 2 , 1 , 1
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx] , -[tobrodpar:AOHx]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod5.xml b/examples/DDCMS/data/tobrod5.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63d5a052fca134a763c99a293eae61efb9c2bad2
--- /dev/null
+++ b/examples/DDCMS/data/tobrod5.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod5.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod5.xml">
+		<LogicalPart name="TOBRod5" category="unspecified">
+			<rSolid name="tobrodpar:TOBRod"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod5.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod5:TOBRod5"/>
+			<rChild name="tobrod5l:TOBRod5L"/>
+			<rRotation name="tobrodpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="tobrod5:TOBRod5"/>
+			<rChild name="tobrod5h:TOBRod5H"/>
+			<rRotation name="tobrodpar:180X"/>
+			<Translation x="[zero]" y="[zero]" z="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod5h.xml b/examples/DDCMS/data/tobrod5h.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d81623992d7e7672149c734ae26211e78acbe13a
--- /dev/null
+++ b/examples/DDCMS/data/tobrod5h.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod5h.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod5h.xml">
+		<LogicalPart name="TOBRod5H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral5H" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralH"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod5h.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod5h:TOBRod5H"/>
+			<rChild name="tobrod5h:TOBRodCentral5H"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod5h:TOBRod5H"/>
+		<Numeric name="Shift" value="-([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod5h:TOBRodCentral5H"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			[tobrodpar:RodY],     -[tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],                [tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			[tobrodpar:EndRod1Z],  [tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="-[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			[tobrodpar:ClampZ2],  [tobrodpar:ClampZ1],  [tobrodpar:ClampZ2],
+			[tobrodpar:ClampZ1]
+		</Vector>
+		<String name="SideCoolName" value="tobrod4c:TOBSideCoolTube4"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolY],  -[tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolZ],  [tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod4c:TOBEndCoolTube4"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="-[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod4c:TOBOptFibre4"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			[tobrodpar:OptFibreZ],  [tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod4c:TOBPlate41"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod4c:TOBPlate42"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule4:TOBModule4"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:NULL, 
+			tobrodpar:R180, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ07], [tobrodpar:ModuleZ08], [tobrodpar:ModuleZ09],
+			[tobrodpar:ModuleZ10], [tobrodpar:ModuleZ11], [tobrodpar:ModuleZ12]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod4c:TOBICC41, tobrod4c:TOBICC41, tobrod4c:TOBICC42, 
+			tobrod4c:TOBICC42, tobrod4c:TOBCCUM4, tobrod4c:TOBRodConn4
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			[tobrodpar:ICCY1], -[tobrodpar:ICCY1],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY2],  [tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ07], [tobrodpar:ICCZ08], [tobrodpar:ICCZ09],
+			[tobrodpar:ICCZ10], [tobrodpar:ICCZ11], [tobrodpar:ICCZ12]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			1 , 1 , 2 , 2 , 0 , 0
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			-[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx]  , [tobrodpar:AOHx] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[zero] , [zero]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrod5l.xml b/examples/DDCMS/data/tobrod5l.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b4de5ada180ab6e8354eaea2f4c69d9374918c23
--- /dev/null
+++ b/examples/DDCMS/data/tobrod5l.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrod5l.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<LogicalPartSection label="tobrod5l.xml">
+		<LogicalPart name="TOBRod5L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRodCentral5L" category="unspecified">
+			<rSolid name="tobrodpar:TOBRodCentralL"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="tobrod5l.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tobrod5l:TOBRod5L"/>
+			<rChild name="tobrod5l:TOBRodCentral5L"/>
+		</PosPart>
+	</PosPartSection>
+	<Algorithm name="track:DDTOBRodAlgo">
+		<rParent name="tobrod5l:TOBRod5L"/>
+		<Numeric name="Shift" value="([tobrodpar:RodL]-[tobrodpar:RodDL])/2"/>
+		<String name="CentralName" value="tobrod5l:TOBRodCentral5L"/>
+		<Vector name="SideRodName" type="string" nEntries="2">
+			tobrodpar:TOBSideRod1, tobrodpar:TOBSideRod2
+		</Vector>
+		<Vector name="SideRodX" type="numeric" nEntries="2">
+			-[tobrodpar:SideRodX],  [tobrodpar:SideRodX]
+		</Vector>
+		<Vector name="SideRodY" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="SideRodZ" type="numeric" nEntries="2">
+			[zero],               -[tobrodpar:RodDL]
+		</Vector>
+		<String name="EndRod1Name" value="tobrodpar:TOBEndRod1"/>
+		<Vector name="EndRod1Y" type="numeric" nEntries="2">
+			-[tobrodpar:RodY],      [tobrodpar:RodY]
+		</Vector>
+		<Vector name="EndRod1Z" type="numeric" nEntries="2">
+			-[tobrodpar:EndRod1Z], -[tobrodpar:EndRod1Z]
+		</Vector>
+		<String name="EndRod2Name" value="tobrodpar:TOBEndRod2"/>
+		<Numeric name="EndRod2Y" value="[tobrodpar:EndRod2Y]"/>
+		<Numeric name="EndRod2Z" value="-[tobrodpar:EndRod2Z]"/>
+		<String name="CableName" value="tobrodpar:TOBCable"/>
+		<Numeric name="CableZ" value="-[tobrodpar:CableZ]"/>
+		<String name="ClampName" value="tobrodpar:TOBClamp"/>
+		<Vector name="ClampX" type="numeric" nEntries="4">
+			-[tobrodpar:ClampX],  -[tobrodpar:ClampX],   [tobrodpar:ClampX],
+			[tobrodpar:ClampX]
+		</Vector>
+		<Vector name="ClampZ" type="numeric" nEntries="4">
+			-[tobrodpar:ClampZ1], -[tobrodpar:ClampZ2], -[tobrodpar:ClampZ1],
+			-[tobrodpar:ClampZ2]
+		</Vector>
+		<String name="SideCoolName" value="tobrod4c:TOBSideCoolTube4"/>
+		<Vector name="SideCoolX" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolX],  [tobrodpar:SideCoolX]
+		</Vector>
+		<Vector name="SideCoolY" type="numeric" nEntries="2">
+			[tobrodpar:SideCoolY],  [tobrodpar:SideCoolY]
+		</Vector>
+		<Vector name="SideCoolZ" type="numeric" nEntries="2">
+			-[tobrodpar:SideCoolZ], -[tobrodpar:SideCoolZ]
+		</Vector>
+		<String name="EndCoolName" value="tobrod4c:TOBEndCoolTube4"/>
+		<String name="EndCoolRot" value="tobrodpar:90XD"/>
+		<Numeric name="EndCoolY" value="[tobrodpar:EndCoolY]"/>
+		<Numeric name="EndCoolZ" value="-[tobrodpar:EndCoolZ]"/>
+		<String name="OptFibreName" value="tobrod4c:TOBOptFibre4"/>
+		<Vector name="optFibreX" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreX],  [tobrodpar:OptFibreX]
+		</Vector>
+		<Vector name="optFibreZ" type="numeric" nEntries="2">
+			-[tobrodpar:OptFibreZ], -[tobrodpar:OptFibreZ]
+		</Vector>
+		<String name="SideClamp1Name" value="tobrod4c:TOBPlate41"/>
+		<Vector name="SideClampX" type="numeric" nEntries="12">
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX],
+			-[tobrodpar:SideClampX],  [tobrodpar:SideClampX], -[tobrodpar:SideClampX],
+			[tobrodpar:SideClampX], -[tobrodpar:SideClampX],  [tobrodpar:SideClampX]
+		</Vector>
+		<Vector name="SideClamp1DZ" type="numeric" nEntries="12">
+			-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],-[tobrodpar:SideClamp1Z],
+			-[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z],
+			[tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z], [tobrodpar:SideClamp1Z]
+		</Vector>
+		<String name="SideClamp2Name" value="tobrod4c:TOBPlate42"/>
+		<Vector name="SideClamp2DZ" type="numeric" nEntries="12">
+			[tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z], [tobrodpar:SideClamp2Z],
+			[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],
+			-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z],-[tobrodpar:SideClamp2Z]
+		</Vector>
+		<String name="ModuleName" value="tobmodule4:TOBModule4"/>
+		<Vector name="ModuleRot" type="string" nEntries="6">
+			tobrodpar:NULL, tobrodpar:R180, tobrodpar:180D,
+			tobrodpar:180X, tobrodpar:180D, tobrodpar:180X</Vector>
+		<Vector name="ModuleY" type="numeric" nEntries="6">
+			[tobrodpar:ModuleY], -[tobrodpar:ModuleY],  [tobrodpar:ModuleY],
+			-[tobrodpar:ModuleY],  [tobrodpar:ModuleY], -[tobrodpar:ModuleY]
+		</Vector>
+		<Vector name="ModuleZ" type="numeric" nEntries="6">
+			[tobrodpar:ModuleZ01], [tobrodpar:ModuleZ02], [tobrodpar:ModuleZ03],
+			[tobrodpar:ModuleZ04], [tobrodpar:ModuleZ05], [tobrodpar:ModuleZ06]
+		</Vector>
+		<Vector name="ICCName" type="string" nEntries="6">
+			tobrod4c:TOBRodConn4, tobrod4c:TOBCCUM4, tobrod4c:TOBICC42, 
+			tobrod4c:TOBICC42, tobrod4c:TOBICC41, tobrod4c:TOBICC41
+		</Vector>
+		<Vector name="ICCY" type="numeric" nEntries="6">
+			-[tobrodpar:ICCY1], -[tobrodpar:ICCY2],  [tobrodpar:ICCY1],
+			-[tobrodpar:ICCY1],  [tobrodpar:ICCY1], -[tobrodpar:ICCY1]
+		</Vector>
+		<Vector name="ICCZ" type="numeric" nEntries="6">
+			[tobrodpar:ICCZ01], [tobrodpar:ICCZ02], [tobrodpar:ICCZ03],
+			[tobrodpar:ICCZ04], [tobrodpar:ICCZ05], [tobrodpar:ICCZ06]
+		</Vector>
+		<String name="AOHName" value="tobrodpar:TOBAOH"/>
+		<Vector name="AOHCopies" type="numeric" nEntries="6">
+			0 , 0 , 2 , 2 , 1 , 1
+		</Vector>
+		<Vector name="AOHx" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHx] , [tobrodpar:AOHx] ,
+			[tobrodpar:AOHx] , -[tobrodpar:AOHx]
+		</Vector>
+		<Vector name="AOHy" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy] ,
+			[tobrodpar:AOHy] , -[tobrodpar:AOHy]
+		</Vector>
+		<Vector name="AOHz" type="numeric" nEntries="6">
+			[zero] , [zero] ,
+			[tobrodpar:AOHz] , -[tobrodpar:AOHz] ,
+			[zero] , [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tobrodpar.xml b/examples/DDCMS/data/tobrodpar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6680e125848951377f129f1bf2d3343b239138be
--- /dev/null
+++ b/examples/DDCMS/data/tobrodpar.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrodpar.xml" eval="true">
+		<Constant name="RodW" value="8.250*cm"/>
+		<Constant name="RodT" value="1.000*cm"/>
+		<Constant name="RodL" value="110.80*cm"/>
+		<Constant name="RodDL" value="1.00*cm"/>
+		<Constant name="CentralRodW" value="6.250*cm"/>
+		<Constant name="SideRodW" value="0.600*cm"/>
+		<Constant name="SideRodT" value="0.060*cm"/>
+		<Constant name="SideRodX" value="6.850*cm"/>
+		<Constant name="RodY" value="0.790*cm"/>
+		<Constant name="EndRod1Z" value="110.2*cm"/>
+		<Constant name="EndRodT" value="0.055*cm"/>
+		<Constant name="EndRodL" value="1.300*cm"/>
+		<Constant name="EndRod2Y" value="0.845*cm"/>
+		<Constant name="EndRod2Z" value="2.450*cm"/>
+		<Constant name="CoolTubeLightR" value="0.110*cm"/>
+		<Constant name="CoolTubeHeavyR" value="0.125*cm"/>
+		<Constant name="CoolFluidLightR" value="0.100*cm"/>
+		<Constant name="CoolFluidHeavyR" value="0.115*cm"/>
+		<Constant name="SideCoolL" value="53.95*cm"/>
+		<Constant name="SideCoolX" value="6.550*cm"/>
+		<Constant name="SideCoolY" value="0.200*cm"/>
+		<Constant name="SideCoolZ" value="56.85*cm"/>
+		<Constant name="EndCoolL" value="6.250*cm"/>
+		<Constant name="EndCoolY" value="0.200*cm"/>
+		<Constant name="EndCoolZ" value="3.100*cm"/>
+		<Constant name="OptFibreW" value="0.150*cm"/>
+		<Constant name="OptFibreH" value="0.330*cm"/>
+		<Constant name="OptFibreL" value="37.50*cm"/>
+		<Constant name="OptFibreX" value="7.100*cm"/>
+		<Constant name="OptFibreZ" value="63.35*cm"/>
+		<Constant name="ClampDx" value="0.350*cm"/>
+		<Constant name="ClampDy" value="0.780*cm"/>
+		<Constant name="ClampDz" value="0.850*cm"/>
+		<Constant name="ClampX" value="7.850*cm"/>
+		<Constant name="ClampZ1" value="109.0*cm"/>
+		<Constant name="ClampZ2" value="29.00*cm"/>
+		<Constant name="SideClampDx" value="0.575*cm"/>
+		<Constant name="SideClampDy" value="0.145*cm"/>
+		<Constant name="SideClampLDz" value="1.900*cm"/>
+		<Constant name="SideClampHDz" value="2.000*cm"/>
+		<Constant name="SideClampX" value="6.825*cm"/>
+		<Constant name="SideClamp1Z" value="2.125*cm"/>
+		<Constant name="SideClamp2Z" value="9.775*cm"/>
+		<Constant name="CableDx" value="2.500*cm"/>
+		<Constant name="CableDy" value="0.050*cm"/>
+		<Constant name="CableDz" value="38.25*cm"/>
+		<Constant name="CableZ" value="62.25*cm"/>
+		<Constant name="ICCDx" value="5.900*cm"/>
+		<Constant name="ICCDy" value="0.125*cm"/>
+		<Constant name="ICC1Dz" value="2.200*cm"/>
+		<Constant name="ICC2Dz" value="3.400*cm"/>
+		<Constant name="ConnDx" value="5.900*cm"/>
+		<Constant name="ConnDy" value="0.250*cm"/>
+		<Constant name="ConnDz" value="3.750*cm"/>
+		<Constant name="CCUMDx" value="5.900*cm"/>
+		<Constant name="CCUMDy" value="0.125*cm"/>
+		<Constant name="CCUMDz" value="3.500*cm"/>
+		<Constant name="ModuleY" value="0.5425*cm"/>
+		<Constant name="ModuleZ01" value="-96.8564*cm"/>
+		<Constant name="ModuleZ02" value="-78.3454*cm"/>
+		<Constant name="ModuleZ03" value="-65.5084*cm"/>
+		<Constant name="ModuleZ04" value="-47.1914*cm"/>
+		<Constant name="ModuleZ05" value="-29.4404*cm"/>
+		<Constant name="ModuleZ06" value="-11.3564*cm"/>
+		<Constant name="ModuleZ07" value="11.3564*cm"/>
+		<Constant name="ModuleZ08" value="29.4404*cm"/>
+		<Constant name="ModuleZ09" value="48.1014*cm"/>
+		<Constant name="ModuleZ10" value="65.5084*cm"/>
+		<Constant name="ModuleZ11" value="80.1174*cm"/>
+		<Constant name="ModuleZ12" value="96.8564*cm"/>
+		<Constant name="ICCY1" value="0.525*cm"/>
+		<Constant name="ICCY2" value="0.400*cm"/>
+		<Constant name="ICCZ01" value="-105.00*cm"/>
+		<Constant name="ICCZ02" value="-96.60*cm"/>
+		<Constant name="ICCZ03" value="-81.20*cm"/>
+		<Constant name="ICCZ04" value="-62.75*cm"/>
+		<Constant name="ICCZ05" value="-44.05*cm"/>
+		<Constant name="ICCZ06" value="-25.85*cm"/>
+		<Constant name="ICCZ07" value="25.85*cm"/>
+		<Constant name="ICCZ08" value="44.05*cm"/>
+		<Constant name="ICCZ09" value="64.10*cm"/>
+		<Constant name="ICCZ10" value="81.20*cm"/>
+		<Constant name="ICCZ11" value="96.60*cm"/>
+		<Constant name="ICCZ12" value="105.00*cm"/>
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="Tol" value="0.0*mm"/>
+		<Constant name="AOHDx" value="0.5*3.000*cm"/>
+		<Constant name="AOHDy" value="0.5*0.200*cm"/>
+		<Constant name="AOHDz" value="0.5*2.300*cm"/>
+		<Constant name="AOHx" value="[ICCDx]-[AOHDx]-13*mm"/>
+		<Constant name="AOHy" value="[ICCDy]+[AOHDy]+[Tol]"/>
+		<Constant name="AOHz" value="12*mm"/>
+	</ConstantsSection>
+	<RotationSection label="tobrodpar.xml">
+		<Rotation name="000D" thetaX="90*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="0*deg" phiZ="0*deg"/>
+		<Rotation name="180D" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="90*deg" thetaZ="180*deg" phiZ="0*deg"/>
+		<Rotation name="180X" thetaX="90*deg" phiX="0*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="180*deg" phiZ="0*deg"/>
+		<Rotation name="90XD" thetaX="90*deg" phiX="90*deg" thetaY="0*deg" phiY="0*deg" thetaZ="90*deg" phiZ="0*deg"/>
+		<Rotation name="R180" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="0*deg" phiZ="0*deg"/>
+	</RotationSection>
+	<SolidSection label="tobrodpar.xml">
+		<Box name="TOBSideRod1" dx="[SideRodW]" dy="[SideRodT]" dz="([RodL]+[RodDL])/2"/>
+		<Box name="TOBSideRod2" dx="[SideRodW]" dy="[SideRodT]" dz="([RodL]-[RodDL])/2"/>
+		<Box name="TOBEndRod1" dx="[CentralRodW]" dy="[SideRodT]" dz="[SideRodW]"/>
+		<Box name="TOBEndRod2" dx="[CentralRodW]" dy="[EndRodT]" dz="[EndRodL]"/>
+		<Box name="TOBClamp" dx="[ClampDx]" dy="[ClampDy]" dz="[ClampDz]"/>
+		<Box name="TOBCable" dx="[CableDx]" dy="[CableDy]" dz="[CableDz]"/>
+		<Box name="TOBICC1" dx="[ICCDx]" dy="[ICCDy]" dz="[ICC1Dz]"/>
+		<Box name="TOBICC2" dx="[ICCDx]" dy="[ICCDy]" dz="[ICC2Dz]"/>
+		<Box name="TOBRodConn" dx="[ConnDx]" dy="[ConnDy]" dz="[ConnDz]"/>
+		<Box name="TOBCCUM" dx="[CCUMDx]" dy="[CCUMDy]" dz="[CCUMDz]"/>
+		<Box name="TOBRod" dx="[RodW]" dy="[RodT]" dz="[RodL]"/>
+		<Box name="TOBRodout" dx="[RodW]" dy="[RodT]" dz="([RodL]+[RodDL])/2"/>
+		<Box name="TOBRodin" dx="[RodW]+[Tol]" dy="([RodT]/2+[Tol])" dz="[RodDL]"/>
+		<Box name="TOBAOH" dx="[AOHDx]" dy="[AOHDy]" dz="[AOHDz]"/>
+		<SubtractionSolid name="TOBRodL">
+			<rSolid name="TOBRodout"/>
+			<rSolid name="TOBRodin"/>
+			<rRotation name="tobrodpar:000D"/>
+			<Translation x="[zero]" y="[RodT]/2" z="([RodL]-[RodDL])/2"/>
+		</SubtractionSolid>
+		<SubtractionSolid name="TOBRodH">
+			<rSolid name="TOBRodout"/>
+			<rSolid name="TOBRodin"/>
+			<rRotation name="tobrodpar:000D"/>
+			<Translation x="[zero]" y="-[RodT]/2" z="-([RodL]-[RodDL])/2"/>
+		</SubtractionSolid>
+		<Box name="TOBRod1Cent" dx="[CentralRodW]" dy="[RodT]" dz="([RodL]+[RodDL])/2"/>
+		<Box name="TOBRod2Cent" dx="([CentralRodW]+[Tol])" dy="([RodT]/2+[Tol])" dz="[RodDL]"/>
+		<SubtractionSolid name="TOBRodCentralL">
+			<rSolid name="TOBRod1Cent"/>
+			<rSolid name="TOBRod2Cent"/>
+			<rRotation name="tobrodpar:000D"/>
+			<Translation x="[zero]" y="[RodT]/2" z="([RodL]-[RodDL])/2"/>
+		</SubtractionSolid>
+		<SubtractionSolid name="TOBRodCentralH">
+			<rSolid name="TOBRod1Cent"/>
+			<rSolid name="TOBRod2Cent"/>
+			<rRotation name="tobrodpar:000D"/>
+			<Translation x="[zero]" y="-[RodT]/2" z="-([RodL]-[RodDL])/2"/>
+		</SubtractionSolid>
+	</SolidSection>
+	<LogicalPartSection label="tobrodpar.xml">
+		<LogicalPart name="TOBSideRod1" category="unspecified">
+			<rSolid name="TOBSideRod1"/>
+			<rMaterial name="tobmaterial:TOB_rod"/>
+		</LogicalPart>
+		<LogicalPart name="TOBSideRod2" category="unspecified">
+			<rSolid name="TOBSideRod2"/>
+			<rMaterial name="tobmaterial:TOB_rod"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndRod1" category="unspecified">
+			<rSolid name="TOBEndRod1"/>
+			<rMaterial name="tobmaterial:TOB_rod"/>
+		</LogicalPart>
+		<LogicalPart name="TOBEndRod2" category="unspecified">
+			<rSolid name="TOBEndRod2"/>
+			<rMaterial name="tobmaterial:TOB_rod"/>
+		</LogicalPart>
+		<LogicalPart name="TOBClamp" category="unspecified">
+			<rSolid name="TOBClamp"/>
+			<rMaterial name="tobmaterial:TOB_plate_A"/>
+		</LogicalPart>
+		<LogicalPart name="TOBCable" category="unspecified">
+			<rSolid name="TOBCable"/>
+			<rMaterial name="tobmaterial:TOB_ICB"/>
+		</LogicalPart>
+		<LogicalPart name="TOBAOH" category="unspecified">
+			<rSolid name="TOBAOH"/>
+			<rMaterial name="tobmaterial:TOB_AOH"/>
+		</LogicalPart>
+	</LogicalPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/tracker.xml b/examples/DDCMS/data/tracker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e3af37e26dda093f05a3f382969c976502b2eb56
--- /dev/null
+++ b/examples/DDCMS/data/tracker.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="tobrodpar.xml" eval="true">
+		<Constant name="BackPlaneDz" value="0.015*mm"/>
+	</ConstantsSection>
+	<SolidSection label="tracker.xml">
+		<Polycone name="Tracker" startPhi="0*deg" deltaPhi="360*deg">
+			<ZSection z="-[cms:TrackBeamZ2]" rMin="[cms:TrackBeamR2]" rMax="[cms:TrackCalorR]"/>
+			<ZSection z="-[cms:TrackBeamZ1]" rMin="[cms:TrackBeamR1]" rMax="[cms:TrackCalorR]"/>
+			<ZSection z="[cms:TrackBeamZ1]" rMin="[cms:TrackBeamR1]" rMax="[cms:TrackCalorR]"/>
+			<ZSection z="[cms:TrackBeamZ2]" rMin="[cms:TrackBeamR2]" rMax="[cms:TrackCalorR]"/>
+		</Polycone>
+	</SolidSection>
+	<LogicalPartSection label="tracker.xml">
+		<LogicalPart name="Tracker" category="unspecified">
+			<rSolid name="Tracker"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<RotationSection label="tracker.xml">
+		<Rotation name="180D" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="90*deg" thetaZ="180*deg" phiZ="0*deg"/>
+		<Rotation name="R180" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" phiY="-90*deg" thetaZ="0*deg" phiZ="0*deg"/>
+		<Rotation name="PAA" thetaX="180*deg" phiX="0*deg" thetaY="90*deg" phiY="90*deg" thetaZ="90*deg" phiZ="0*deg"/>
+	</RotationSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackerParameters.xml b/examples/DDCMS/data/trackerParameters.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1622383889aacae772cbd11f242bfc62de0677b6
--- /dev/null
+++ b/examples/DDCMS/data/trackerParameters.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <ConstantsSection  label="trackerParameters.xml" eval="true">
+  <Vector name="vPars" type="numeric" nEntries="6">
+    80, 52, 1, 2, 0, 0
+  </Vector>
+  <Vector name="Subdetector1" type="numeric" nEntries="6">
+    16, 8, 2, 0xF, 0xFF, 0x3F
+  </Vector>
+  <Vector name="Subdetector2" type="numeric" nEntries="10">
+    23, 16, 10, 8, 2, 0x3, 0xF, 0x3F, 0x3, 0x3F
+  </Vector>
+  <Vector name="Subdetector3" type="numeric" nEntries="12">
+    14, 12, 10, 4, 2, 0, 0x7, 0x3, 0x3, 0x3F, 0x3, 0x3
+  </Vector>
+  <Vector name="Subdetector4" type="numeric" nEntries="12">
+    13, 11, 9, 7, 2, 0, 0x3, 0x3, 0x3, 0x3, 0x1F, 0x3
+  </Vector>
+  <Vector name="Subdetector5" type="numeric" nEntries="10">
+    14, 12, 5, 2, 0, 0x7, 0x3, 0x7F, 0x7, 0x3
+  </Vector>
+  <Vector name="Subdetector6" type="numeric" nEntries="14">
+    18, 14, 12, 8, 5, 2, 0, 0x3, 0xF, 0x3, 0xF, 0x7, 0x7, 0x3
+  </Vector>
+  <Vector name="detIdShifts" type="numeric" nEntries="36">
+    -1, 23, -1,
+    13, -1, 18,
+
+    16, 16, 14,
+    11, 14, 14,
+    
+     8,  8,  4,
+     9,  5,  8,
+
+     2,  2,  2,
+     2,  2,  5,
+
+     0,  0,  0,
+     0,  0,  2,
+
+    -1, -1, -1,
+    -1, -1,  0
+  </Vector>
+ </ConstantsSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackerStructureTopology.xml b/examples/DDCMS/data/trackerStructureTopology.xml
new file mode 100644
index 0000000000000000000000000000000000000000..96d7131a05de1eb2e8c470fb145b4bb5e36a5088
--- /dev/null
+++ b/examples/DDCMS/data/trackerStructureTopology.xml
@@ -0,0 +1,321 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+  <SpecParSection label="spec-pars2.xml">
+    <SpecPar name="FullTrackerPar">
+      <PartSelector path="//Tracker"/>
+      <Parameter name="TkDDDStructure" value="FullTracker"/>
+    </SpecPar>
+    <SpecPar name="PixelBarrelSubDetPar">
+      <PartSelector path="//PixelBarrel"/>
+      <Parameter name="TkDDDStructure" value="PixelBarrel"/>
+    </SpecPar>
+    <SpecPar name="PixelBarrelLayerPar">
+      <PartSelector path="//PixelBarrelLayer0"/>
+      <PartSelector path="//PixelBarrelLayer1"/>
+      <PartSelector path="//PixelBarrelLayer2"/>
+      <Parameter name="TkDDDStructure" value="PixelBarrelLayer"/>
+    </SpecPar>
+    <SpecPar name="PixelBarrelLadderPar">
+      <PartSelector path="//PixelBarrelLadderHalf"/>
+      <PartSelector path="//PixelBarrelLadderFull"/>
+      <Parameter name="TkDDDStructure" value="PixelBarrelLadder"/>
+    </SpecPar>
+    <SpecPar name="PixelBarrelModulePar">
+      <PartSelector path="//PixelBarrelActiveFull"/>
+      <PartSelector path="//PixelBarrelActiveHalf"/>
+      <Parameter name="TkDDDStructure" value="PixelBarrelDet"/>
+    </SpecPar>
+    <SpecPar name="PixelEndcapSubDetPar">
+      <PartSelector path="//PixelForwardZPlus"/>
+      <PartSelector path="//PixelForwardZMinus"/>
+      <Parameter name="TkDDDStructure" value="PixelEndcapSubDet"/>
+    </SpecPar>
+    <SpecPar name="PixelEndcapDiskPar">
+      <PartSelector path="//PixelForwardDiskZMinus"/>
+      <PartSelector path="//PixelForwardDiskZPlus"/>
+      <Parameter name="TkDDDStructure" value="PixelEndcapDisk"/>
+    </SpecPar>
+    <SpecPar name="PixelEndcapPanelPar">
+      <PartSelector path="//PixelForwardPanel3Left"/>
+      <PartSelector path="//PixelForwardPanel3Right"/>
+      <PartSelector path="//PixelForwardPanel4Right"/>
+      <PartSelector path="//PixelForwardPanel4Left"/>
+      <Parameter name="TkDDDStructure" value="PixelEndcapPanel"/>
+    </SpecPar>
+    <SpecPar name="PixelEndcapDetPar">
+      <PartSelector path="//PixelForwardActive1x2"/>
+      <PartSelector path="//PixelForwardActive1x5"/>
+      <PartSelector path="//PixelForwardActive2x3"/>
+      <PartSelector path="//PixelForwardActive2x4"/>
+      <PartSelector path="//PixelForwardActive2x5"/>
+      <Parameter name="TkDDDStructure" value="PixelEndcapDet"/>
+    </SpecPar>
+    <SpecPar name="TIBSubDetPar">
+      <PartSelector path="//TIB"/>
+      <Parameter name="TkDDDStructure" value="TIB"/>
+    </SpecPar>
+    <SpecPar name="TIBSubDetLayerPar">
+      <PartSelector path="//TIBLayer0"/>
+      <PartSelector path="//TIBLayer1"/>
+      <PartSelector path="//TIBLayer2"/>
+      <PartSelector path="//TIBLayer3"/>
+      <Parameter name="TkDDDStructure" value="TIBLayer"/>
+    </SpecPar>
+    <!--definire plus e minus-->
+    <SpecPar name="TIBSubDetStringPar">
+      <PartSelector path="//TIBString0LoMin1"/>
+      <PartSelector path="//TIBString0LoPls1"/>
+      <PartSelector path="//TIBString0UpMin1"/>
+      <PartSelector path="//TIBString0UpPls1"/>
+      <PartSelector path="//TIBString1LoMin1"/>
+      <PartSelector path="//TIBString1LoPls1"/>
+      <PartSelector path="//TIBString1UpMin1"/>
+      <PartSelector path="//TIBString1UpPls1"/>
+      <PartSelector path="//TIBString2LoMin1"/>
+      <PartSelector path="//TIBString2LoPls1"/>
+      <PartSelector path="//TIBString2UpMin1"/>
+      <PartSelector path="//TIBString2UpPls1"/>
+      <PartSelector path="//TIBString3LoMin1"/>
+      <PartSelector path="//TIBString3LoPls1"/>
+      <PartSelector path="//TIBString3UpMin1"/>
+      <PartSelector path="//TIBString3UpPls1"/>
+      <Parameter name="TkDDDStructure" value="TIBString"/>
+    </SpecPar>
+    <SpecPar name="TIBSubDetGluedDetPar">
+      <PartSelector path="//TIBModule0A"/>
+      <PartSelector path="//TIBModule0B"/>
+      <Parameter name="TkDDDStructure" value="TIBGluedDet"/>
+    </SpecPar>
+    <SpecPar name="TIBSubDetDetPar">
+      <PartSelector path="//TIBActiveRphi0"/>
+      <PartSelector path="//TIBActiveSter0"/>
+      <PartSelector path="//TIBActiveRphi2"/>
+      <Parameter name="TkDDDStructure" value="TIBDet"/>
+    </SpecPar>
+    <SpecPar name="TIDSubDetPar">
+      <PartSelector path="//TIDB"/>
+      <PartSelector path="//TIDF"/>
+      <Parameter name="TkDDDStructure" value="TID"/>
+    </SpecPar>
+    <SpecPar name="TIDSubDetWheelPar">
+      <PartSelector path="//TIDWheelB"/>
+      <PartSelector path="//TIDWheelF"/>
+      <Parameter name="TkDDDStructure" value="TIDWheel"/>
+    </SpecPar>
+    <SpecPar name="TIDSubDetRingPar">
+      <PartSelector path="//TIDRing0F"/>
+      <PartSelector path="//TIDRing1F"/>
+      <PartSelector path="//TIDRing0B"/>
+      <PartSelector path="//TIDRing1B"/>
+      <PartSelector path="//TIDRing2"/>
+      <Parameter name="TkDDDStructure" value="TIDRing"/>
+    </SpecPar>
+    <SpecPar name="TIDSubDetGluedDetPar">
+      <PartSelector path="//TIDModule0L"/>
+      <PartSelector path="//TIDModule0R"/>
+      <PartSelector path="//TIDModule1L"/>
+      <PartSelector path="//TIDModule1R"/>
+      <Parameter name="TkDDDStructure" value="TIDGluedDet"/>
+    </SpecPar>
+    <SpecPar name="TIDSubDetDetPar">
+      <PartSelector path="//TIDModule0RphiActive"/>
+      <PartSelector path="//TIDModule0StereoActive"/>
+      <PartSelector path="//TIDModule1RphiActive"/>
+      <PartSelector path="//TIDModule1StereoActive"/>
+      <PartSelector path="//TIDModule2RphiActive"/>
+      <Parameter name="TkDDDStructure" value="TIDDet"/>
+    </SpecPar>
+    <SpecPar name="TOBSubDetPar">
+      <PartSelector path="//TOB"/>
+      <Parameter name="TkDDDStructure" value="TOB"/>
+    </SpecPar>
+    <SpecPar name="TOBSubDetLayerPar">
+      <PartSelector path="//TOBLayer0"/>
+      <PartSelector path="//TOBLayer1"/>
+      <PartSelector path="//TOBLayer2"/>
+      <PartSelector path="//TOBLayer3"/>
+      <PartSelector path="//TOBLayer4"/>
+      <PartSelector path="//TOBLayer5"/>
+      <Parameter name="TkDDDStructure" value="TOBLayer"/>
+    </SpecPar>
+    <SpecPar name="TOBSubDetRodPar">
+      <PartSelector path="//TOBRod0L"/>
+      <PartSelector path="//TOBRod0H"/>
+      <PartSelector path="//TOBRod1L"/>
+      <PartSelector path="//TOBRod1H"/>
+      <PartSelector path="//TOBRod2L"/>
+      <PartSelector path="//TOBRod2H"/>
+      <PartSelector path="//TOBRod3L"/>
+      <PartSelector path="//TOBRod3H"/>
+      <PartSelector path="//TOBRod4L"/>
+      <PartSelector path="//TOBRod4H"/>
+      <PartSelector path="//TOBRod5L"/>
+      <PartSelector path="//TOBRod5H"/>
+      <Parameter name="TkDDDStructure" value="TOBRod"/>
+    </SpecPar>
+    <SpecPar name="TOBSubDetGluedDetPar">
+      <PartSelector path="//TOBModule0"/>
+      <Parameter name="TkDDDStructure" value="TOBGluedDet"/>
+    </SpecPar>
+    <SpecPar name="TOBSubDetDetPar">
+      <PartSelector path="//TOBActiveRphi0"/>
+      <PartSelector path="//TOBActiveSter0"/>
+      <PartSelector path="//TOBActiveRphi2"/>
+      <PartSelector path="//TOBActiveRphi4"/>
+      <Parameter name="TkDDDStructure" value="TOBDet"/>
+    </SpecPar>
+    <SpecPar name="TECSubDetPar">
+      <PartSelector path="//TEC"/>
+      <Parameter name="TkDDDStructure" value="TEC"/>
+    </SpecPar>
+    <SpecPar name="TECSubDetWheelPar">
+      <PartSelector path="//TECWheelA"/>
+      <PartSelector path="//TECWheelB"/>
+      <PartSelector path="//TECWheel6"/>
+      <!-- special disk that contains the beamsplitters (for alignment)-->
+      <PartSelector path="//TECWheelC"/>
+      <PartSelector path="//TECWheelD"/>
+      <Parameter name="TkDDDStructure" value="TECWheel"/>
+    </SpecPar>
+    <SpecPar name="TECSubDetPetalPar">
+      <PartSelector path="//TECPetalCont0F"/>
+      <PartSelector path="//TECPetalCont0B"/>
+      <PartSelector path="//TECPetalCont3F"/>
+      <PartSelector path="//TECPetalCont3B"/>
+      <PartSelector path="//TECPetalCont6F"/>
+      <PartSelector path="//TECPetalCont6B"/>
+      <PartSelector path="//TECPetalCont8F"/>
+      <PartSelector path="//TECPetalCont8B"/>
+      <Parameter name="TkDDDStructure" value="TECPetal"/>
+    </SpecPar>
+    <SpecPar name="TECSubDetRingPar">
+      <PartSelector path="//TECRing0F"/>
+      <PartSelector path="//TECRing0B"/>
+      <PartSelector path="//TECRing1F"/>
+      <PartSelector path="//TECRing1B"/>
+      <PartSelector path="//TECRing2F"/>
+      <PartSelector path="//TECRing2B"/>
+      <PartSelector path="//TECRing3F"/>
+      <PartSelector path="//TECRing3B"/>
+      <PartSelector path="//TECRing4F"/>
+      <PartSelector path="//TECRing4B"/>
+      <PartSelector path="//TECRing5F"/>
+      <PartSelector path="//TECRing5B"/>
+      <PartSelector path="//TECRing6F"/>
+      <PartSelector path="//TECRing6B"/>
+      <Parameter name="TkDDDStructure" value="TECRing"/>
+    </SpecPar>
+    <SpecPar name="TECSubDetGluedDetPar">
+      <PartSelector path="//TECModule0"/>
+      <PartSelector path="//TECModule1"/>
+      <PartSelector path="//TECModule4"/>
+      <Parameter name="TkDDDStructure" value="TECGluedDet"/>
+    </SpecPar>
+    <SpecPar name="TECSubDetDetPar">
+      <PartSelector path="//TECModule0RphiActive"/>
+      <PartSelector path="//TECModule0StereoActive"/>
+      <PartSelector path="//TECModule1RphiActive"/>
+      <PartSelector path="//TECModule1StereoActive"/>
+      <PartSelector path="//TECModule2RphiActive"/>
+      <PartSelector path="//TECModule3RphiActive"/>
+      <PartSelector path="//TECModule4RphiActive"/>
+      <PartSelector path="//TECModule4StereoActive"/>
+      <PartSelector path="//TECModule5RphiActive"/>
+      <PartSelector path="//TECModule6RphiActive"/>
+      <Parameter name="TkDDDStructure" value="TECDet"/>
+    </SpecPar>
+    <SpecPar name="TrackerStereoDetectorsPar">
+      <PartSelector path="//TIBActiveSter0"/>
+      <PartSelector path="//TIDModule0StereoActive"/>
+      <PartSelector path="//TIDModule1StereoActive"/>
+      <PartSelector path="//TOBActiveSter0"/>
+      <PartSelector path="//TECModule0StereoActive"/>
+      <PartSelector path="//TECModule1StereoActive"/>
+      <PartSelector path="//TECModule4StereoActive"/>
+      <Parameter name="TrackerStereoDetectors" value="true"/>
+    </SpecPar>
+    <SpecPar name="TrackerAPVNumber6Par">
+      <PartSelector path="//TIBActiveRphi0"/>
+      <PartSelector path="//TIBActiveSter0"/>
+      <PartSelector path="//TIDModule0RphiActive"/>
+      <PartSelector path="//TIDModule0StereoActive"/>
+      <PartSelector path="//TIDModule1RphiActive"/>
+      <PartSelector path="//TIDModule1StereoActive"/>
+      <PartSelector path="//TOBActiveRphi4"/>
+      <PartSelector path="//TECModule0RphiActive"/>
+      <PartSelector path="//TECModule0StereoActive"/>
+      <PartSelector path="//TECModule1RphiActive"/>
+      <PartSelector path="//TECModule1StereoActive"/>
+      <PartSelector path="//TECModule4RphiActive"/>
+      <PartSelector path="//TECModule4StereoActive"/>
+      <Parameter name="SiliconAPVNumber" value="6"/>
+    </SpecPar>
+    <SpecPar name="TrackerAPVNumber4Par">
+      <PartSelector path="//TIBActiveRphi2"/>
+      <PartSelector path="//TIDModule2RphiActive"/>
+      <PartSelector path="//TOBActiveRphi0"/>
+      <PartSelector path="//TOBActiveSter0"/>
+      <PartSelector path="//TOBActiveRphi2"/>
+      <PartSelector path="//TECModule2RphiActive"/>
+      <PartSelector path="//TECModule3RphiActive"/>
+      <PartSelector path="//TECModule5RphiActive"/>
+      <PartSelector path="//TECModule6RphiActive"/>
+      <Parameter name="SiliconAPVNumber" value="4"/>
+    </SpecPar>
+    <SpecPar name="PixelROCRowsPar">
+      <PartSelector path="//PixelBarrelActiveFull"/>
+      <PartSelector path="//PixelBarrelActiveHalf"/>
+      <PartSelector path="//PixelForwardActive1x2"/>
+      <PartSelector path="//PixelForwardActive1x5"/>
+      <PartSelector path="//PixelForwardActive2x3"/>
+      <PartSelector path="//PixelForwardActive2x4"/>
+      <PartSelector path="//PixelForwardActive2x5"/>
+      <Parameter name="PixelROCRows" value="80"/>
+    </SpecPar>
+    <SpecPar name="PixelROCColsPar">
+      <PartSelector path="//PixelBarrelActiveFull"/>
+      <PartSelector path="//PixelBarrelActiveHalf"/>
+      <PartSelector path="//PixelForwardActive1x2"/>
+      <PartSelector path="//PixelForwardActive1x5"/>
+      <PartSelector path="//PixelForwardActive2x3"/>
+      <PartSelector path="//PixelForwardActive2x4"/>
+      <PartSelector path="//PixelForwardActive2x5"/>
+      <Parameter name="PixelROCCols" value="52"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_XPar">
+      <PartSelector path="//PixelBarrelActiveFull"/>
+      <PartSelector path="//PixelForwardActive2x3"/>
+      <PartSelector path="//PixelForwardActive2x4"/>
+      <PartSelector path="//PixelForwardActive2x5"/>
+      <Parameter name="PixelROC_X" value="2"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_X_HalfPar">
+      <PartSelector path="//PixelBarrelActiveHalf"/>
+      <PartSelector path="//PixelForwardActive1x2"/>
+      <PartSelector path="//PixelForwardActive1x5"/>
+      <Parameter name="PixelROC_X" value="1"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_YPar">
+      <PartSelector path="//PixelBarrelActiveFull"/>
+      <PartSelector path="//PixelBarrelActiveHalf"/>
+      <Parameter name="PixelROC_Y" value="8"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_Y2Par">
+      <PartSelector path="//PixelForwardActive1x2"/>
+      <Parameter name="PixelROC_Y" value="2"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_Y3Par">
+      <PartSelector path="//PixelForwardActive2x3"/>
+      <Parameter name="PixelROC_Y" value="3"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_Y4Par">
+      <PartSelector path="//PixelForwardActive2x4"/>
+      <Parameter name="PixelROC_Y" value="4"/>
+    </SpecPar>
+    <SpecPar name="PixelROC_Y5Par">
+      <PartSelector path="//PixelForwardActive1x5"/>
+      <PartSelector path="//PixelForwardActive2x5"/>
+      <Parameter name="PixelROC_Y" value="5"/>
+    </SpecPar>
+  </SpecParSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackerbulkhead.xml b/examples/DDCMS/data/trackerbulkhead.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81532897010c5e32e140796469c16e03814d962f
--- /dev/null
+++ b/examples/DDCMS/data/trackerbulkhead.xml
@@ -0,0 +1,293 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <ConstantsSection label="trackerbulkhead.xml" eval="true">
+  <Constant name="zero" value="0.0*fm"/>
+  <Constant name="Rin" value="190*mm"/>
+  <Constant name="Rout" value="1.233*m"/>
+  <Constant name="Thick" value="[BulkheadThick]+[BHDiskThick]+[BHCoversThick]"/>
+  <Constant name="BulkheadZ" value="[tob:Zv3]+0.5*[Thick]"/>
+  <!--should be 4mm behind TEC is at the end of tob to prevent overlaps-->
+  <Constant name="BulkheadThick" value="89*mm"/>
+  <Constant name="BulkheadRout" value="1053*mm"/>
+  <Constant name="BulkheadRin" value="[tecpetal3:PetalContRmin]"/>
+  <Constant name="PatchpanelR4" value="1105*mm"/>
+  <!-- inside of the outer cable region. NOTE: there is a (historical?) gap between R3 and R4 -->
+  <Constant name="PatchpanelR3" value="[BulkheadRout]"/>
+  <!-- outside of bulkhead region-->
+  <Constant name="PatchpanelR2" value="645*mm"/>
+  <!-- outside of the inner pixel region-->
+  <Constant name="PatchpanelR1" value="[AlignRingRout]"/>
+  <!-- inside of the inner pixel region-->
+  <Constant name="PatchpanelThick" value="[BulkheadThick]"/>
+  <Constant name="TECPatchpanelWidth" value="35*deg"/>
+  <!-- <Constant name="PIXPatchpanelWidth1" value="20*deg"/> -->
+  <Constant name="PIXPatchpanelWidth1" value="10*deg"/>
+  <Constant name="PIXPatchpanelWidth2" value="160*deg"/>
+  <Constant name="PIXPatchpanelPhi" value="-100*deg"/>
+  <Constant name="TECPatchpanelPhi" value="10*deg"/>
+  <Constant name="PpBoxWidth" value="175*mm"/>
+  <!-- <Constant name="PpBoxLengthL" value="298.19*mm"/> -->
+  <Constant name="PpConnectorsLength" value="50.*mm"/>
+  <Constant name="PpConnectorsThick"  value="15.*mm"/>
+  <!-- <Constant name="PpBoxLengthL" value="154.96*mm"/> -->
+  <!-- <Constant name="PpBoxLengthL" value="129.96*mm"/> -->
+  <Constant name="PpBoxLengthL" value="104.96*mm"/>
+  <!-- <Constant name="PpBoxLengthS" value="143.23*mm"/> -->
+  <!-- <Constant name="PpBoxLengthS" value="118.23*mm"/> -->
+  <Constant name="PpBoxLengthS" value="93.23*mm"/>
+  <Constant name="PpBoxThick" value="0.5*43.43*mm"/>
+  <Constant name="PpBoxSideX" value="20.2*mm"/>
+  <Constant name="PpBoxSideY" value="12.5*mm"/>
+  <Constant name="PpBoxDistX" value="35*mm"/>
+  <Constant name="PpBoxDistY" value="14*mm"/>
+  <Constant name="CtrlBoxWidth" value="75*mm"/>
+  <Constant name="CtrlBoxLength" value="195*mm"/>
+  <Constant name="CtrlBoxThick" value="25*mm"/>
+  <Constant name="CtrlBoxDistX" value="73.35*mm"/>
+  <Constant name="CtrlBoxDistY" value="12.85*mm"/>
+  <Constant name="AlignRingRin" value="235*mm"/>
+  <Constant name="AlignRingRout" value="365*mm"/>
+  <Constant name="AlignRingThick" value="48.5*mm"/>
+  <Constant name="PixelCablesRin" value="[Rin]"/>
+  <!-- cables going to pixel patchpanel -->
+  <Constant name="PixelCablesRout" value="[AlignRingRout]"/>
+  <Constant name="PixelCablesThick" value="12.2*mm"/>
+  <Constant name="BHDiskRin" value="[BulkheadRin]"/>
+  <Constant name="BHDiskRout" value="[BulkheadRout]"/>
+  <Constant name="BHDiskThick" value="5*mm"/>
+  <Constant name="BHCoversRin" value="[BulkheadRin]"/>
+  <Constant name="BHCoversRout" value="[BulkheadRout]"/>
+  <Constant name="BHCoversThick" value="1.1*mm"/>
+ </ConstantsSection>
+ <SolidSection label="trackerbulkhead.xml">
+  <Tubs name="TrackerBulkhead" rMin="[Rin]" rMax="[Rout]" dz="0.5*[Thick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="BHDisk" rMin="[BHDiskRin]" rMax="[BHDiskRout]" dz="0.5*[BHDiskThick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="BHCovers" rMin="[BHCoversRin]" rMax="[BHCoversRout]" dz="0.5*[BHCoversThick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="OuterCables" rMin="[PatchpanelR4]" rMax="[Rout]" dz="0.5*[Thick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="TECPatchpanel" rMin="[PatchpanelR2]" rMax="[PatchpanelR3]" dz="0.5*[PatchpanelThick]" startPhi="-[TECPatchpanelWidth]" deltaPhi="[TECPatchpanelWidth]"/>
+  <Tubs name="PIXPatchpanel1" rMin="[PatchpanelR1]" rMax="[PatchpanelR3]" dz="0.5*[PatchpanelThick]" startPhi="-2*[PIXPatchpanelWidth1]" deltaPhi="[PIXPatchpanelWidth1]"/>
+  <Tubs name="PIXPatchpanel1b" rMin="[PatchpanelR1]" rMax="[PatchpanelR3]" dz="0.5*[PatchpanelThick]" startPhi="-2*[PIXPatchpanelWidth1]" deltaPhi="[PIXPatchpanelWidth1]"/>
+  <Tubs name="PIXPatchpanel2" rMin="[PatchpanelR1]" rMax="[PatchpanelR2]" dz="0.5*[PatchpanelThick]" startPhi="-[PIXPatchpanelWidth2]" deltaPhi="[PIXPatchpanelWidth2]"/>
+  <Tubs name="TECAlignRing" rMin="[AlignRingRin]" rMax="[AlignRingRout]" dz="0.5*[AlignRingThick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Tubs name="PixelCables" rMin="[PixelCablesRin]" rMax="[PixelCablesRout]" dz="0.5*[PixelCablesThick]" startPhi="0*deg" deltaPhi="360*deg"/>
+  <Box name="TECPpConnectors" dx="0.5*[PpConnectorsLength]" dy="0.5*[PpBoxWidth]" dz="0.5*[PpConnectorsThick]"/>
+  <Box name="TECPpBoxC" dx="0.5*[PpConnectorsLength]" dy="0.5*[PpBoxWidth]" dz="0.5*[PpBoxThick]"/>
+  <Box name="TECPpBoxL" dx="0.5*[PpBoxLengthL]" dy="0.5*[PpBoxWidth]" dz="0.5*[PpBoxThick]"/>
+  <Box name="TECPpBoxS" dx="0.5*[PpBoxLengthS]" dy="0.5*[PpBoxWidth]" dz="[PpBoxThick]"/>
+  <Box name="TECCtrlBox" dx="0.5*[CtrlBoxLength]" dy="0.5*[CtrlBoxWidth]" dz="0.5*[CtrlBoxThick]"/>
+ </SolidSection>
+ <LogicalPartSection label="trackerbulkhead.xml">
+  <LogicalPart name="TrackerBulkhead" category="unspecified">
+   <rSolid name="trackerbulkhead:TrackerBulkhead"/>
+   <rMaterial name="materials:Air"/>
+  </LogicalPart>
+  <LogicalPart name="BHDisk" category="unspecified">
+   <rSolid name="BHDisk"/>
+   <rMaterial name="tecmaterial:TEC_BHDisk"/>
+  </LogicalPart>
+  <LogicalPart name="BHCovers" category="unspecified">
+   <rSolid name="BHCovers"/>
+   <rMaterial name="tecmaterial:TEC_BHCovers"/>
+  </LogicalPart>
+  <LogicalPart name="OuterCables" category="unspecified">
+   <rSolid name="trackerbulkhead:OuterCables"/>
+   <rMaterial name="trackermaterial:Tk_panels_up"/>
+  </LogicalPart>
+  <LogicalPart name="TECPatchpanel" category="unspecified">
+   <rSolid name="trackerbulkhead:TECPatchpanel"/>
+   <rMaterial name="materials:Air"/>
+  </LogicalPart>
+  <LogicalPart name="PIXPatchpanel1" category="unspecified">
+   <rSolid name="trackerbulkhead:PIXPatchpanel1"/>
+   <rMaterial name="trackermaterial:Tk_panels_mid1"/>
+  </LogicalPart>
+  <LogicalPart name="PIXPatchpanel1b" category="unspecified">
+   <rSolid name="trackerbulkhead:PIXPatchpanel1b"/>
+   <rMaterial name="trackermaterial:Tk_panels_mid1b"/>
+  </LogicalPart>
+  <LogicalPart name="PIXPatchpanel2" category="unspecified">
+   <rSolid name="trackerbulkhead:PIXPatchpanel2"/>
+   <rMaterial name="trackermaterial:Tk_panels_mid2"/>
+  </LogicalPart>
+  <LogicalPart name="TECAlignRing" category="unspecified">
+   <rSolid name="trackerbulkhead:TECAlignRing"/>
+   <rMaterial name="tecmaterial:TEC_AlignRing"/>
+  </LogicalPart>
+  <LogicalPart name="PixelCables" category="unspecified">
+   <rSolid name="trackerbulkhead:PixelCables"/>
+   <rMaterial name="pixbarmaterial:PixelBarrelSupTubCables"/>
+  </LogicalPart>
+  <LogicalPart name="TECPpConnectors" category="unspecified">
+   <rSolid name="trackerbulkhead:TECPpConnectors"/>
+   <rMaterial name="tecmaterial:TEC_Connectors"/>
+  </LogicalPart>
+  <LogicalPart name="TECPpBoxC" category="unspecified">
+   <rSolid name="trackerbulkhead:TECPpBoxC"/>
+   <rMaterial name="tecmaterial:TEC_PatchpanelBox"/>
+  </LogicalPart>
+  <LogicalPart name="TECPpBoxL" category="unspecified">
+   <rSolid name="trackerbulkhead:TECPpBoxL"/>
+   <rMaterial name="tecmaterial:TEC_PatchpanelBox"/>
+  </LogicalPart>
+  <LogicalPart name="TECPpBoxS" category="unspecified">
+   <rSolid name="trackerbulkhead:TECPpBoxS"/>
+   <rMaterial name="tecmaterial:TEC_PatchpanelBox"/>
+  </LogicalPart>
+  <LogicalPart name="TECCtrlBox" category="unspecified">
+   <rSolid name="trackerbulkhead:TECCtrlBox"/>
+   <rMaterial name="tecmaterial:TEC_PatchCtrlBox"/>
+  </LogicalPart>
+ </LogicalPartSection>
+ <PosPartSection label="trackerbulkhead.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="trackerbulkhead:TrackerBulkhead"/>
+   <Translation x="[zero]" y="[zero]" z="[BulkheadZ]"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="trackerbulkhead:TrackerBulkhead"/>
+   <Translation x="[zero]" y="[zero]" z="-[BulkheadZ]"/>
+   <rRotation name="tracker:180D"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TrackerBulkhead"/>
+   <rChild name="trackerbulkhead:BHDisk"/>
+   <Translation x="[zero]" y="[zero]" z="-0.5*[Thick]+0.5*[BHDiskThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TrackerBulkhead"/>
+   <rChild name="trackerbulkhead:BHCovers"/>
+   <Translation x="[zero]" y="[zero]" z="0.5*[Thick]-0.5*[BHCoversThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TrackerBulkhead"/>
+   <rChild name="trackerbulkhead:OuterCables"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TrackerBulkhead"/>
+   <rChild name="trackerbulkhead:TECAlignRing"/>
+   <Translation x="[zero]" y="[zero]" z="-0.5*[Thick]+0.5*[AlignRingThick]+[BHDiskThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TrackerBulkhead"/>
+   <rChild name="trackerbulkhead:PixelCables"/>
+   <Translation x="[zero]" y="[zero]" z="-0.5*[Thick]+0.5*[PixelCablesThick]+[AlignRingThick]+[BHDiskThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpConnectors"/>
+   <Translation x="[PatchpanelR2]+0.5*[PpConnectorsLength]+[PpBoxSideX]" y="-0.5*[PpBoxWidth]-[PpBoxSideY]" z="-0.5*[PatchpanelThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpConnectors"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+[PpBoxLengthL]+0.5*[PpConnectorsLength]+[PpBoxSideX]" y="-0.5*[PpBoxWidth]-[PpBoxSideY]" z="-0.5*[PatchpanelThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="3">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpConnectors"/>
+   <Translation x="[PatchpanelR2]+0.5*[PpConnectorsLength]+[PpBoxSideX]-[PpBoxDistX]" y="-1.5*[PpBoxWidth]-[PpBoxSideY]-[PpBoxDistY]" z="-0.5*[PatchpanelThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="4">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpConnectors"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+[PpBoxLengthL]+0.5*[PpConnectorsLength]+[PpBoxSideX]-[PpBoxDistX]" y="-1.5*[PpBoxWidth]-[PpBoxSideY]-[PpBoxDistY]" z="-0.5*[PatchpanelThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpBoxC"/>
+    <Translation x="[PatchpanelR2]+[PpConnectorsLength]+[PpBoxLengthL]+0.5*[PpConnectorsLength]+[PpBoxSideX]" y="-0.5*[PpBoxWidth]-[PpBoxSideY]" z="-0.5*[PatchpanelThick]+[PpConnectorsThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpBoxC"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+[PpBoxLengthL]+0.5*[PpConnectorsLength]+[PpBoxSideX]-[PpBoxDistX]" y="-1.5*[PpBoxWidth]-[PpBoxSideY]-[PpBoxDistY]" z="-0.5*[PatchpanelThick]+[PpConnectorsThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpBoxL"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+0.5*[PpBoxLengthL]+[PpBoxSideX]" y="-0.5*[PpBoxWidth]-[PpBoxSideY]" z="-0.5*[PatchpanelThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpBoxL"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+0.5*[PpBoxLengthL]+[PpBoxSideX]-[PpBoxDistX]" y="-1.5*[PpBoxWidth]-[PpBoxSideY]-[PpBoxDistY]" z="-0.5*[PatchpanelThick]+0.5*[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpBoxS"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+[PpBoxLengthL]+[PpConnectorsLength]+0.5*[PpBoxLengthS]+[PpBoxSideX]" y="-0.5*[PpBoxWidth]-[PpBoxSideY]" z="-0.5*[PatchpanelThick]+[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECPpBoxS"/>
+   <Translation x="[PatchpanelR2]+[PpConnectorsLength]+[PpBoxLengthL]+[PpConnectorsLength]+0.5*[PpBoxLengthS]+[PpBoxSideX]-[PpBoxDistX]" y="-1.5*[PpBoxWidth]-[PpBoxSideY]-[PpBoxDistY]" z="-0.5*[PatchpanelThick]+[PpBoxThick]"/>
+  </PosPart>
+  <PosPart copyNumber="1">
+   <rParent name="trackerbulkhead:TECPatchpanel"/>
+   <rChild name="trackerbulkhead:TECCtrlBox"/>
+   <Translation x="[PatchpanelR2]+0.5*[CtrlBoxLength]+[PpBoxSideX]+[CtrlBoxDistX]" y="-[PpBoxSideY]-2*[PpBoxWidth]-[PpBoxDistY]-[CtrlBoxDistY]-0.5*[CtrlBoxWidth]" z="-0.5*[PatchpanelThick]+0.5*[CtrlBoxThick]"/>
+  </PosPart>
+ </PosPartSection>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="trackerbulkhead:TrackerBulkhead"/>
+  <String name="ChildName" value="trackerbulkhead:TECPatchpanel"/>
+  <Numeric name="N" value="4"/>
+  <Numeric name="StartCopyNo" value="1"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="-[TECPatchpanelPhi]"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3">
+   0, 0, 0.5*([BHDiskThick] - [BHCoversThick])  </Vector>
+ </Algorithm>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="trackerbulkhead:TrackerBulkhead"/>
+  <String name="ChildName" value="trackerbulkhead:TECPatchpanel"/>
+  <Numeric name="N" value="4"/>
+  <Numeric name="StartCopyNo" value="5"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="-[TECPatchpanelPhi]-[TECPatchpanelWidth]"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3">
+   0, 0, 0.5*([BHDiskThick] - [BHCoversThick])  </Vector>
+ </Algorithm>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="trackerbulkhead:TrackerBulkhead"/>
+  <String name="ChildName" value="trackerbulkhead:PIXPatchpanel1"/>
+  <Numeric name="N" value="2"/>
+  <Numeric name="StartCopyNo" value="1"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="-[PIXPatchpanelPhi]"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3">
+   0, 0,0.5*([BHDiskThick] - [BHCoversThick])   </Vector>
+</Algorithm>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="trackerbulkhead:TrackerBulkhead"/>
+  <String name="ChildName" value="trackerbulkhead:PIXPatchpanel1b"/>
+  <Numeric name="N" value="2"/>
+  <Numeric name="StartCopyNo" value="1"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="-[PIXPatchpanelPhi]+10*deg"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3">
+   0, 0,0.5*([BHDiskThick] - [BHCoversThick])   </Vector>
+ </Algorithm>
+ <Algorithm name="track:DDTrackerAngular">
+  <rParent name="trackerbulkhead:TrackerBulkhead"/>
+  <String name="ChildName" value="trackerbulkhead:PIXPatchpanel2"/>
+  <Numeric name="N" value="2"/>
+  <Numeric name="StartCopyNo" value="1"/>
+  <Numeric name="IncrCopyNo" value="1"/>
+  <Numeric name="RangeAngle" value="360*deg"/>
+  <Numeric name="StartAngle" value="-[TECPatchpanelPhi]-2*[TECPatchpanelWidth]-2*[PIXPatchpanelWidth1]"/>
+  <Numeric name="Radius" value="[zero]"/>
+  <Vector name="Center" type="numeric" nEntries="3">
+   0, 0, 0.5*([BHDiskThick] - [BHCoversThick]) </Vector>
+ </Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackerother.xml b/examples/DDCMS/data/trackerother.xml
new file mode 100644
index 0000000000000000000000000000000000000000..485afad32fea01d025cc17bd0f9ccd739bc4844c
--- /dev/null
+++ b/examples/DDCMS/data/trackerother.xml
@@ -0,0 +1,388 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="trackerother.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="OuterCylinderRin" value="1.169*m"/>
+		<Constant name="OuterCylinderRout" value="1.223*m"/>
+		<Constant name="OuterCylinderL" value="2.650*m"/>
+		<Constant name="ThermalScreenRin" value="1.181*m"/>
+		<Constant name="ThermalScreenRout" value="1.193*m"/>
+		<Constant name="ThermalScreenL" value="2.450*m"/>
+		<Constant name="ThermalScreenR1" value="[ThermalScreenRin]+3*mm"/>
+		<Constant name="ThermalScreenR2" value="[ThermalScreenR1]+8*mm"/>
+		<Constant name="SupportTubeRin" value="[ThermalScreenRout]"/>
+		<Constant name="SupportTubeRout" value="1.223*m"/>
+		<Constant name="SupportTubeR1" value="[SupportTubeRin]+2*mm"/>
+		<Constant name="SupportTubeR2" value="[SupportTubeR1]+25.950*mm"/>
+		<Constant name="SupportTubeR3" value="[SupportTubeR2]+2*mm"/>
+		<Constant name="SupportTubeL" value="2.650*m"/>
+		<Constant name="SupportTubeInsertR" value="5*mm"/>
+		<Constant name="SupportTubeInsertDz" value="([SupportTubeRout]-[SupportTubeRin])/2-0.010*mm"/>
+		<Constant name="SupportTubeInsert1Dz" value="([SupportTubeR1]-[SupportTubeRin])/2-0.010*mm"/>
+		<Constant name="SupportTubeInsert2Dz" value="([SupportTubeR2]-[SupportTubeR1])/2-0.010*mm"/>
+		<Constant name="SupportTubeInsert3Dz" value="([SupportTubeR3]-[SupportTubeR2])/2-0.010*mm"/>
+		<Constant name="SupportTubeInsert4Dz" value="([SupportTubeRout]-[SupportTubeR3])/2-0.010*mm"/>
+		<Constant name="SupportTubeInsertZoff" value="-2.574*m"/>
+		<Constant name="SupportTubeInsertZpitch" value="143*mm"/>
+		<Constant name="ThermalScreenManifoldL" value="([SupportTubeL]-[ThermalScreenL])/2"/>
+		<Constant name="ThermalScreenPlaceholderL" value="3*mm"/>
+		<Constant name="TrackerRailRout" value="[ThermalScreenRout]"/>
+		<Constant name="TrackerRailRin" value="[TrackerRailRout]-24*mm"/>
+		<Constant name="TrackerRailPhiLo" value="-0.067*rad"/>
+		<Constant name="TrackerRailPhiRange" value="0.10*rad"/>
+		<Constant name="TrackerRailDR1" value="2*mm"/>
+		<Constant name="TrackerRailPhi1" value="-0.066892*rad"/>
+		<Constant name="TrackerRailPhi2" value="-0.012701*rad"/>
+		<Constant name="TrackerRailPhi3" value="0.016935*rad"/>
+		<Constant name="TrackerRailPhi4" value="0.0212*rad"/>
+		<Constant name="TOBRailR" value="5*mm"/>
+		<Constant name="TOBRailRpos" value="1177*mm"/>
+		<Constant name="Tol" value="0.0*mm"/>
+	</ConstantsSection>
+	<SolidSection label="trackerother.xml">
+		<!-- TRACKER SUPPORT TUBE AND THERMAL SCREEN -->
+		<Tubs name="TrackerOuterCylinder" rMin="[OuterCylinderRin]+[Tol]" rMax="[OuterCylinderRout]" dz="[OuterCylinderL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerThermalScreen" rMin="[ThermalScreenRin]+[Tol]" rMax="[ThermalScreenRout]-[Tol]" dz="[ThermalScreenL]" startPhi="4*deg" deltaPhi="172*deg"/>
+		<Tubs name="TrackerThermalScreenCooling" rMin="[ThermalScreenRin]+[Tol]" rMax="[ThermalScreenR1]-[Tol]" dz="[ThermalScreenL]" startPhi="4*deg" deltaPhi="172*deg"/>
+		<Tubs name="TrackerThermalScreenFoam" rMin="[ThermalScreenR1]+[Tol]" rMax="[ThermalScreenR2]-[Tol]" dz="[ThermalScreenL]" startPhi="4*deg" deltaPhi="172*deg"/>
+		<Tubs name="TrackerThermalScreenShield" rMin="[ThermalScreenR2]+[Tol]" rMax="[ThermalScreenRout]-[Tol]" dz="[ThermalScreenL]" startPhi="4*deg" deltaPhi="172*deg"/>
+		<Tubs name="TrackerThermalScreenManifold" rMin="[ThermalScreenRin]+[Tol]" rMax="[ThermalScreenRout]-[Tol]" dz="[ThermalScreenManifoldL]" startPhi="4*deg" deltaPhi="172*deg"/>
+		<Tubs name="TrackerThermalScreenPlaceholder" rMin="[ThermalScreenRin]+[Tol]" rMax="[ThermalScreenRout]-[Tol]" dz="[ThermalScreenPlaceholderL]" startPhi="4*deg" deltaPhi="172*deg"/>
+		<Tubs name="TrackerSupportTube" rMin="[SupportTubeRin]+[Tol]" rMax="[SupportTubeRout]-[Tol]" dz="[SupportTubeL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeCFSkin1" rMin="[SupportTubeRin]+[Tol]" rMax="[SupportTubeR1]-[Tol]" dz="[SupportTubeL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeNomex" rMin="[SupportTubeR1]+[Tol]" rMax="[SupportTubeR2]-[Tol]" dz="[SupportTubeL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeCFSkin2" rMin="[SupportTubeR2]+[Tol]" rMax="[SupportTubeR3]-[Tol]" dz="[SupportTubeL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeShield" rMin="[SupportTubeR3]+[Tol]" rMax="[SupportTubeRout]-[Tol]" dz="[SupportTubeL]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeInsert" rMin="[zero]" rMax="[SupportTubeInsertR]" dz="[SupportTubeInsertDz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeInsertCFSkin1" rMin="[zero]" rMax="[SupportTubeInsertR]" dz="[SupportTubeInsert1Dz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeInsertNomex" rMin="[zero]" rMax="[SupportTubeInsertR]" dz="[SupportTubeInsert2Dz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeInsertCFSkin2" rMin="[zero]" rMax="[SupportTubeInsertR]" dz="[SupportTubeInsert3Dz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerSupportTubeInsertShield" rMin="[zero]" rMax="[SupportTubeInsertR]" dz="[SupportTubeInsert4Dz]" startPhi="0*deg" deltaPhi="360*deg"/>
+		<Tubs name="TrackerRail" rMin="[TrackerRailRin]+[Tol]" rMax="[TrackerRailRout]-[Tol]" dz="[SupportTubeL]" startPhi="[TrackerRailPhiLo]" deltaPhi="[TrackerRailPhiRange]"/>
+		<Tubs name="TrackerRailNomex" rMin="[TrackerRailRin]+[TrackerRailDR1]+[Tol]" rMax="[TrackerRailRout]-[TrackerRailDR1]-[Tol]" dz="[SupportTubeL]" startPhi="[TrackerRailPhi1]" deltaPhi="[TrackerRailPhi2]-[TrackerRailPhi1]"/>
+		<Tubs name="TrackerRailCFSkin1" rMin="[TrackerRailRin]+[Tol]" rMax="[TrackerRailRin]+[TrackerRailDR1]-[Tol]" dz="[SupportTubeL]" startPhi="[TrackerRailPhi1]" deltaPhi="[TrackerRailPhi2]-[TrackerRailPhi1]"/>
+		<Tubs name="TrackerRailCFSkin2" rMin="[TrackerRailRout]-[TrackerRailDR1]+[Tol]" rMax="[TrackerRailRout]-[Tol]" dz="[SupportTubeL]" startPhi="[TrackerRailPhi1]" deltaPhi="[TrackerRailPhi2]-[TrackerRailPhi1]"/>
+		<Tubs name="TrackerRailCF" rMin="[TrackerRailRin]+[Tol]" rMax="[TrackerRailRout]-[Tol]" dz="[SupportTubeL]" startPhi="[TrackerRailPhi2]" deltaPhi="[TrackerRailPhi3]-[TrackerRailPhi2]"/>
+		<Tubs name="TOBRail" rMin="[zero]" rMax="[TOBRailR]" dz="[SupportTubeL]" startPhi="0*deg" deltaPhi="360*deg"/>
+	</SolidSection>
+	<LogicalPartSection label="trackerother.xml">
+		<!-- TRACKER SUPPORT TUBE AND THERMAL SCREEN -->
+		<LogicalPart name="TrackerOuterCylinder" category="unspecified">
+			<rSolid name="TrackerOuterCylinder"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerThermalScreen" category="unspecified">
+			<rSolid name="TrackerThermalScreen"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerThermalScreenCooling" category="unspecified">
+			<rSolid name="TrackerThermalScreenCooling"/>
+			<rMaterial name="trackermaterial:TS_Cooling"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerThermalScreenFoam" category="unspecified">
+			<rSolid name="TrackerThermalScreenFoam"/>
+			<rMaterial name="trackermaterial:T_Rohacell"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerThermalScreenShield" category="unspecified">
+			<rSolid name="TrackerThermalScreenShield"/>
+			<rMaterial name="trackermaterial:TS_Shield"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerThermalScreenManifold" category="unspecified">
+			<rSolid name="TrackerThermalScreenManifold"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerThermalScreenPlaceholder" category="unspecified">
+			<rSolid name="TrackerThermalScreenPlaceholder"/>
+			<rMaterial name="trackermaterial:T_StainlessSteel"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTube" category="unspecified">
+			<rSolid name="TrackerSupportTube"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeCFSkin1" category="unspecified">
+			<rSolid name="TrackerSupportTubeCFSkin1"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeNomex" category="unspecified">
+			<rSolid name="TrackerSupportTubeNomex"/>
+			<rMaterial name="trackermaterial:T_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeCFSkin2" category="unspecified">
+			<rSolid name="TrackerSupportTubeCFSkin2"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeShield" category="unspecified">
+			<rSolid name="TrackerSupportTubeShield"/>
+			<rMaterial name="trackermaterial:T_Aluminium"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeInsert" category="unspecified">
+			<rSolid name="TrackerSupportTubeInsert"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeInsertCFSkin1" category="unspecified">
+			<rSolid name="TrackerSupportTubeInsertCFSkin1"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeInsertNomex" category="unspecified">
+			<rSolid name="TrackerSupportTubeInsertNomex"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeInsertCFSkin2" category="unspecified">
+			<rSolid name="TrackerSupportTubeInsertCFSkin2"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerSupportTubeInsertShield" category="unspecified">
+			<rSolid name="TrackerSupportTubeInsertShield"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerRail" category="unspecified">
+			<rSolid name="TrackerRail"/>
+			<rMaterial name="materials:Air"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerRailNomex" category="unspecified">
+			<rSolid name="TrackerRailNomex"/>
+			<rMaterial name="trackermaterial:T_Nomex"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerRailCFSkin1" category="unspecified">
+			<rSolid name="TrackerRailCFSkin1"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerRailCFSkin2" category="unspecified">
+			<rSolid name="TrackerRailCFSkin2"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TrackerRailCF" category="unspecified">
+			<rSolid name="TrackerRailCF"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+		<LogicalPart name="TOBRail" category="unspecified">
+			<rSolid name="TOBRail"/>
+			<rMaterial name="trackermaterial:T_CarbonFibreStr"/>
+		</LogicalPart>
+	</LogicalPartSection>
+	<PosPartSection label="trackerother.xml">
+		<!-- TRACKER SUPPORT TUBE AND THERMAL SCREEN -->
+		<PosPart copyNumber="1">
+			<rParent name="tracker:Tracker"/>
+			<rChild name="trackerother:TrackerOuterCylinder"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerThermalScreen"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerThermalScreen"/>
+			<rRotation name="tracker:R180"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerThermalScreen"/>
+			<rChild name="trackerother:TrackerThermalScreenCooling"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerThermalScreen"/>
+			<rChild name="trackerother:TrackerThermalScreenFoam"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerThermalScreen"/>
+			<rChild name="trackerother:TrackerThermalScreenShield"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerSupportTube"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerSupportTube"/>
+			<rChild name="trackerother:TrackerSupportTubeCFSkin1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerSupportTube"/>
+			<rChild name="trackerother:TrackerSupportTubeNomex"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerSupportTube"/>
+			<rChild name="trackerother:TrackerSupportTubeCFSkin2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerSupportTube"/>
+			<rChild name="trackerother:TrackerSupportTubeShield"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerThermalScreenManifold"/>
+			<rChild name="trackerother:TrackerThermalScreenPlaceholder"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerThermalScreenManifold"/>
+			<Translation x="[zero]" y="[zero]" z="[ThermalScreenL]+[ThermalScreenManifoldL]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerThermalScreenManifold"/>
+			<rRotation name="tracker:R180"/>
+			<Translation x="[zero]" y="[zero]" z="[ThermalScreenL]+[ThermalScreenManifoldL]"/>
+		</PosPart>
+		<PosPart copyNumber="3">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerThermalScreenManifold"/>
+			<Translation x="[zero]" y="[zero]" z="-([ThermalScreenL]+[ThermalScreenManifoldL])"/>
+		</PosPart>
+		<PosPart copyNumber="4">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerThermalScreenManifold"/>
+			<rRotation name="tracker:R180"/>
+			<Translation x="[zero]" y="[zero]" z="-([ThermalScreenL]+[ThermalScreenManifoldL])"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerRail"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="trackerother:TrackerOuterCylinder"/>
+			<rChild name="trackerother:TrackerRail"/>
+			<rRotation name="tracker:180D"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerRail"/>
+			<rChild name="trackerother:TrackerRailNomex"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerRail"/>
+			<rChild name="trackerother:TrackerRailCFSkin1"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerRail"/>
+			<rChild name="trackerother:TrackerRailCFSkin2"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerRail"/>
+			<rChild name="trackerother:TrackerRailCF"/>
+		</PosPart>
+		<PosPart copyNumber="1">
+			<rParent name="trackerother:TrackerRail"/>
+			<rChild name="trackerother:TOBRail"/>
+			<Translation x="[TOBRailRpos]*cos([TrackerRailPhi4])" y="[TOBRailRpos]*sin([TrackerRailPhi4])" z="[zero]"/>
+		</PosPart>
+	</PosPartSection>
+	<!-- TRACKER SUPPORT TUBE AND THERMAL SCREEN -->
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeCFSkin1"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertCFSkin1"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			[SupportTubeRin]+[SupportTubeInsert1Dz], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeCFSkin1"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertCFSkin1"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="37"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			-([SupportTubeRin]+[SupportTubeInsert1Dz]), [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeNomex"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertNomex"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			[SupportTubeR1]+[SupportTubeInsert2Dz], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeNomex"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertNomex"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="37"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			-([SupportTubeR1]+[SupportTubeInsert2Dz]), [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeCFSkin2"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertCFSkin2"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			[SupportTubeR2]+[SupportTubeInsert3Dz], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeCFSkin2"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertCFSkin2"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="37"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			-([SupportTubeR2]+[SupportTubeInsert3Dz]), [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeShield"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertShield"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="1"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			[SupportTubeR3]+[SupportTubeInsert4Dz], [zero], [zero]
+		</Vector>
+	</Algorithm>
+	<Algorithm name="track:DDTrackerLinear">
+		<rParent name="trackerother:TrackerSupportTubeShield"/>
+		<String name="ChildName" value="trackerother:TrackerSupportTubeInsertShield"/>
+		<Numeric name="Number" value="36"/>
+		<Numeric name="Theta" value="0*deg"/>
+		<Numeric name="Phi" value="0*deg"/>
+		<Numeric name="Offset" value="[SupportTubeInsertZoff]"/>
+		<Numeric name="Delta" value="[SupportTubeInsertZpitch]"/>
+		<Numeric name="StartCopyNo" value="37"/>
+		<Numeric name="IncrCopyNo" value="1"/>
+		<String name="Rotation" value="tracker:PAA"/>
+		<Vector name="Center" type="numeric" nEntries="3"> 
+			-([SupportTubeR3]+[SupportTubeInsert4Dz]), [zero], [zero]
+		</Vector>
+	</Algorithm>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackerpixbar.xml b/examples/DDCMS/data/trackerpixbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41c64508135ba5d2cd2f77915d74b713aceb6990
--- /dev/null
+++ b/examples/DDCMS/data/trackerpixbar.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <PosPartSection label="trackerpixbar.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="pixbar:PixelBarrel"/>
+  </PosPart>
+ </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackerpixfwd.xml b/examples/DDCMS/data/trackerpixfwd.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba606869d39fb7384147696e60e9630eb22600ba
--- /dev/null
+++ b/examples/DDCMS/data/trackerpixfwd.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="trackerpixfwd.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+		<Constant name="zPos" value="[pixfwd:ZPixelForward]"/>
+	</ConstantsSection>
+	<PosPartSection label="trackerpixfwd.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tracker:Tracker"/>
+			<rChild name="pixfwd:PixelForwardZPlus"/>
+			<Translation x="[zero]" y="[zero]" z="[zPos]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tracker:Tracker"/>
+			<rChild name="pixfwd:PixelForwardZMinus"/>
+			<Translation x="[zero]" y="[zero]" z="-[zPos]"/>
+			<rRotation name="pixfwdCommon:Y180"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackertec.xml b/examples/DDCMS/data/trackertec.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f0500144631ccb1b638431ce7638f2f73a53a2d9
--- /dev/null
+++ b/examples/DDCMS/data/trackertec.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+	<ConstantsSection label="trackertec.xml" eval="true">
+		<Constant name="zero" value="0.0*fm"/>
+	</ConstantsSection>
+	<PosPartSection label="trackertec.xml">
+		<PosPart copyNumber="1">
+			<rParent name="tracker:Tracker"/>
+			<rChild name="tec:TEC"/>
+			<Translation x="[zero]" y="[zero]" z="[tec:ZPos]"/>
+		</PosPart>
+		<PosPart copyNumber="2">
+			<rParent name="tracker:Tracker"/>
+			<rChild name="tec:TEC"/>
+			<rRotation name="tracker:180D"/>
+			<Translation x="[zero]" y="[zero]" z="-[tec:ZPos]"/>
+		</PosPart>
+	</PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackertib.xml b/examples/DDCMS/data/trackertib.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f5a2fee54b9f00dcb4d26bea024bea718ae0941
--- /dev/null
+++ b/examples/DDCMS/data/trackertib.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <PosPartSection label="trackertib.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="tib:TIB"/>
+  </PosPart>
+ </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackertibtidservices.xml b/examples/DDCMS/data/trackertibtidservices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..17eff414573d36a10132e50f7e631036e9ec6abe
--- /dev/null
+++ b/examples/DDCMS/data/trackertibtidservices.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <PosPartSection label="tibtidservices.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="tibtidservicesf:TIBTIDServicesF"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="tibtidservicesb:TIBTIDServicesB"/>
+   <rRotation name="tracker:180D"/>
+  </PosPart>
+ </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackertid.xml b/examples/DDCMS/data/trackertid.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6318f4bdc8e9246528d4ae905cfa09d6e29afcea
--- /dev/null
+++ b/examples/DDCMS/data/trackertid.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <PosPartSection label="trackertid.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="tidf:TIDF"/>
+  </PosPart>
+  <PosPart copyNumber="2">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="tidb:TIDB"/>
+   <rRotation name="tracker:180D"/>
+  </PosPart>
+ </PosPartSection>
+</DDDefinition>
diff --git a/examples/DDCMS/data/trackertob.xml b/examples/DDCMS/data/trackertob.xml
new file mode 100644
index 0000000000000000000000000000000000000000..921eece57f395e4ce078bd8772da99e1c8a23806
--- /dev/null
+++ b/examples/DDCMS/data/trackertob.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
+ <PosPartSection label="trackertob.xml">
+  <PosPart copyNumber="1">
+   <rParent name="tracker:Tracker"/>
+   <rChild name="tob:TOB"/>
+  </PosPart>
+ </PosPartSection>
+</DDDefinition>