From 9b4fd6592fd19b9f7f4b86098b31df7b578a55a4 Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Wed, 20 Sep 2017 19:25:17 +0200
Subject: [PATCH] A more complete version of the CMS tracker (though not fully
 converted)

---
 DDCMS/include/DDCMS/DDCMS.h                   |   37 +-
 DDCMS/include/DDCMS/DDCMSPlugins.h            |   13 +-
 DDCMS/include/DDCMS/DDCMSTags.h               |   21 +
 DDCMS/src/DDCMS.cpp                           |  256 +-
 DDCMS/src/plugins/DDDefinitions2Objects.cpp   |  576 +++--
 DDCMS/src/plugins/DDPixBarLayerAlgo.cpp       |  113 +-
 DDCMS/src/plugins/DDTECCoolAlgo.cpp           |   83 +
 DDCMS/src/plugins/DDTECModuleAlgo.cpp         |  645 +++++
 DDCMS/src/plugins/DDTECOptoHybAlgo.cpp        |  100 +
 DDCMS/src/plugins/DDTECPhiAlgo.cpp            |   81 +
 DDCMS/src/plugins/DDTECPhiAltAlgo.cpp         |   82 +
 DDCMS/src/plugins/DDTIBLayerAlgo.cpp          |   46 +
 DDCMS/src/plugins/DDTIDModuleAlgo.cpp         |   46 +
 DDCMS/src/plugins/DDTIDRingAlgo.cpp           |  125 +
 DDCMS/src/plugins/DDTOBRodAlgo.cpp            |   46 +
 DDCMS/src/plugins/DDTrackerAngular.cpp        |  116 +
 DDCMS/src/plugins/DDTrackerLinear.cpp         |   71 +-
 DDCMS/src/plugins/DDTrackerPhiAlgo.cpp        |   93 +
 DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp     |  104 +
 DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp     |   78 +
 DDCMS/src/plugins/DDTrackerZPosAlgo.cpp       |   73 +
 DDCore/include/DD4hep/Printout.h              |   21 +
 DDCore/include/XML/XMLElements.h              |   37 +-
 DDCore/src/Printout.cpp                       |   34 +
 .../DDCMS/{CMS-tracker.png => CMS-pixbar.png} |  Bin
 examples/DDCMS/CMS-tracker1.png               |  Bin 0 -> 286691 bytes
 examples/DDCMS/data/cms_tracker.xml           |  251 +-
 examples/DDCMS/data/pixfwd.xml                |  170 ++
 examples/DDCMS/data/pixfwdBlade.xml           |  551 ++++
 examples/DDCMS/data/pixfwdCommon.xml          |   26 +
 examples/DDCMS/data/pixfwdCylinder.xml        |  343 +++
 examples/DDCMS/data/pixfwdDisk.xml            |  278 ++
 examples/DDCMS/data/pixfwdMaterials.xml       |    2 +-
 examples/DDCMS/data/pixfwdNipple.xml          |  377 +++
 examples/DDCMS/data/pixfwdPanel.xml           |  202 ++
 examples/DDCMS/data/pixfwdPanelBase.xml       |  301 +++
 examples/DDCMS/data/pixfwdPlaq.xml            |   88 +
 examples/DDCMS/data/pixfwdPlaq1x2.xml         |  173 ++
 examples/DDCMS/data/pixfwdPlaq1x5.xml         |  189 ++
 examples/DDCMS/data/pixfwdPlaq2x3.xml         |  196 ++
 examples/DDCMS/data/pixfwdPlaq2x4.xml         |  206 ++
 examples/DDCMS/data/pixfwdPlaq2x5.xml         |  213 ++
 examples/DDCMS/data/pixfwdTest.xml            |   43 +
 examples/DDCMS/data/tec.xml                   |  389 +++
 examples/DDCMS/data/tecbackplate.xml          |  121 +
 examples/DDCMS/data/tecmaterial.xml           | 1093 ++++++++
 examples/DDCMS/data/tecmodpar.xml             |   48 +
 examples/DDCMS/data/tecmodule0.xml            |   37 +
 examples/DDCMS/data/tecmodule0r.xml           |   93 +
 examples/DDCMS/data/tecmodule0s.xml           |  105 +
 examples/DDCMS/data/tecmodule1.xml            |   37 +
 examples/DDCMS/data/tecmodule1r.xml           |   92 +
 examples/DDCMS/data/tecmodule1s.xml           |  105 +
 examples/DDCMS/data/tecmodule2.xml            |  123 +
 examples/DDCMS/data/tecmodule3.xml            |  124 +
 examples/DDCMS/data/tecmodule4.xml            |   38 +
 examples/DDCMS/data/tecmodule4r.xml           |   95 +
 examples/DDCMS/data/tecmodule4s.xml           |  108 +
 examples/DDCMS/data/tecmodule5.xml            |  131 +
 examples/DDCMS/data/tecmodule6.xml            |  127 +
 examples/DDCMS/data/tecpetal0.xml             |   12 +
 examples/DDCMS/data/tecpetal0b.xml            |  445 ++++
 examples/DDCMS/data/tecpetal0f.xml            |  445 ++++
 examples/DDCMS/data/tecpetal3.xml             |   12 +
 examples/DDCMS/data/tecpetal3b.xml            |  390 +++
 examples/DDCMS/data/tecpetal3f.xml            |  385 +++
 examples/DDCMS/data/tecpetal6b.xml            |  359 +++
 examples/DDCMS/data/tecpetal6f.xml            |  354 +++
 examples/DDCMS/data/tecpetal8b.xml            |  332 +++
 examples/DDCMS/data/tecpetal8f.xml            |  327 +++
 examples/DDCMS/data/tecpetalb.xml             |   92 +
 examples/DDCMS/data/tecpetalf.xml             |  113 +
 examples/DDCMS/data/tecpetpar.xml             |   86 +
 examples/DDCMS/data/tecring0.xml              |   20 +
 examples/DDCMS/data/tecring0b.xml             |   30 +
 examples/DDCMS/data/tecring0f.xml             |   47 +
 examples/DDCMS/data/tecring1.xml              |   20 +
 examples/DDCMS/data/tecring1b.xml             |   32 +
 examples/DDCMS/data/tecring1f.xml             |   43 +
 examples/DDCMS/data/tecring2.xml              |   20 +
 examples/DDCMS/data/tecring2b.xml             |   45 +
 examples/DDCMS/data/tecring2f.xml             |   48 +
 examples/DDCMS/data/tecring3.xml              |   20 +
 examples/DDCMS/data/tecring3b.xml             |   46 +
 examples/DDCMS/data/tecring3f.xml             |   48 +
 examples/DDCMS/data/tecring4.xml              |   20 +
 examples/DDCMS/data/tecring4b.xml             |   47 +
 examples/DDCMS/data/tecring4f.xml             |   47 +
 examples/DDCMS/data/tecring5.xml              |   20 +
 examples/DDCMS/data/tecring5b.xml             |   55 +
 examples/DDCMS/data/tecring5f.xml             |   54 +
 examples/DDCMS/data/tecring6.xml              |   20 +
 examples/DDCMS/data/tecring6b.xml             |   50 +
 examples/DDCMS/data/tecring6f.xml             |   46 +
 examples/DDCMS/data/tecservices.xml           |  924 +++++++
 examples/DDCMS/data/tecwheel.xml              |  128 +
 examples/DDCMS/data/tecwheel6.xml             |  237 ++
 examples/DDCMS/data/tecwheela.xml             |  190 ++
 examples/DDCMS/data/tecwheelb.xml             |  202 ++
 examples/DDCMS/data/tecwheelc.xml             |  202 ++
 examples/DDCMS/data/tecwheeld.xml             |  202 ++
 examples/DDCMS/data/tib.xml                   |   48 +
 examples/DDCMS/data/tiblayer0.xml             |  105 +
 examples/DDCMS/data/tiblayer1.xml             |  105 +
 examples/DDCMS/data/tiblayer2.xml             |  105 +
 examples/DDCMS/data/tiblayer3.xml             |  105 +
 examples/DDCMS/data/tiblayerpar.xml           |   45 +
 examples/DDCMS/data/tibmaterial.xml           |  443 ++++
 examples/DDCMS/data/tibmodpar.xml             |  215 ++
 examples/DDCMS/data/tibmodule0.xml            |  145 ++
 examples/DDCMS/data/tibmodule0a.xml           |  114 +
 examples/DDCMS/data/tibmodule0b.xml           |  115 +
 examples/DDCMS/data/tibmodule2.xml            |   67 +
 examples/DDCMS/data/tibstring0.xml            |   44 +
 examples/DDCMS/data/tibstring0ll.xml          |  164 ++
 examples/DDCMS/data/tibstring0lr.xml          |  164 ++
 examples/DDCMS/data/tibstring0ul.xml          |  164 ++
 examples/DDCMS/data/tibstring0ur.xml          |  164 ++
 examples/DDCMS/data/tibstring1.xml            |   44 +
 examples/DDCMS/data/tibstring1ll.xml          |  164 ++
 examples/DDCMS/data/tibstring1lr.xml          |  164 ++
 examples/DDCMS/data/tibstring1ul.xml          |  164 ++
 examples/DDCMS/data/tibstring1ur.xml          |  164 ++
 examples/DDCMS/data/tibstring2.xml            |   44 +
 examples/DDCMS/data/tibstring2ll.xml          |  153 ++
 examples/DDCMS/data/tibstring2lr.xml          |  153 ++
 examples/DDCMS/data/tibstring2ul.xml          |  153 ++
 examples/DDCMS/data/tibstring2ur.xml          |  153 ++
 examples/DDCMS/data/tibstring3.xml            |   44 +
 examples/DDCMS/data/tibstring3ll.xml          |  153 ++
 examples/DDCMS/data/tibstring3lr.xml          |  153 ++
 examples/DDCMS/data/tibstring3ul.xml          |  153 ++
 examples/DDCMS/data/tibstring3ur.xml          |  153 ++
 examples/DDCMS/data/tibstringpar.xml          |  118 +
 examples/DDCMS/data/tibtidcommonmaterial.xml  |  570 +++++
 examples/DDCMS/data/tibtidservices.xml        |  394 +++
 examples/DDCMS/data/tibtidservicesb.xml       |   65 +
 examples/DDCMS/data/tibtidservicesf.xml       |   65 +
 examples/DDCMS/data/tid.xml                   |   94 +
 examples/DDCMS/data/tidb.xml                  |   70 +
 examples/DDCMS/data/tidf.xml                  |   70 +
 examples/DDCMS/data/tidmaterial.xml           |  340 +++
 examples/DDCMS/data/tidmodpar.xml             |   81 +
 examples/DDCMS/data/tidmodule0.xml            |  183 ++
 examples/DDCMS/data/tidmodule0l.xml           |   69 +
 examples/DDCMS/data/tidmodule0r.xml           |   69 +
 examples/DDCMS/data/tidmodule1.xml            |  183 ++
 examples/DDCMS/data/tidmodule1l.xml           |   70 +
 examples/DDCMS/data/tidmodule1r.xml           |   70 +
 examples/DDCMS/data/tidmodule2.xml            |  183 ++
 examples/DDCMS/data/tidring0.xml              |  149 ++
 examples/DDCMS/data/tidring0b.xml             |  140 +
 examples/DDCMS/data/tidring0f.xml             |  140 +
 examples/DDCMS/data/tidring1.xml              |  158 ++
 examples/DDCMS/data/tidring1b.xml             |  142 ++
 examples/DDCMS/data/tidring1f.xml             |  142 ++
 examples/DDCMS/data/tidring2.xml              |  287 +++
 examples/DDCMS/data/tidringpar.xml            |   86 +
 examples/DDCMS/data/tob.xml                   | 1404 ++++++++++
 examples/DDCMS/data/tobmaterial.xml           | 2248 +++++++++++++++++
 examples/DDCMS/data/tobmodpar.xml             |  178 ++
 examples/DDCMS/data/tobmodule0.xml            |  267 ++
 examples/DDCMS/data/tobmodule2.xml            |  130 +
 examples/DDCMS/data/tobmodule4.xml            |  130 +
 examples/DDCMS/data/tobrod0.xml               |   26 +
 examples/DDCMS/data/tobrod0c.xml              |   71 +
 examples/DDCMS/data/tobrod0h.xml              |  144 ++
 examples/DDCMS/data/tobrod0l.xml              |  144 ++
 examples/DDCMS/data/tobrod1.xml               |   26 +
 examples/DDCMS/data/tobrod1h.xml              |  144 ++
 examples/DDCMS/data/tobrod1l.xml              |  144 ++
 examples/DDCMS/data/tobrod2.xml               |   26 +
 examples/DDCMS/data/tobrod2c.xml              |   71 +
 examples/DDCMS/data/tobrod2h.xml              |  144 ++
 examples/DDCMS/data/tobrod2l.xml              |  144 ++
 examples/DDCMS/data/tobrod3.xml               |   26 +
 examples/DDCMS/data/tobrod3h.xml              |  144 ++
 examples/DDCMS/data/tobrod3l.xml              |  144 ++
 examples/DDCMS/data/tobrod4.xml               |   26 +
 examples/DDCMS/data/tobrod4c.xml              |   71 +
 examples/DDCMS/data/tobrod4h.xml              |  144 ++
 examples/DDCMS/data/tobrod4l.xml              |  144 ++
 examples/DDCMS/data/tobrod5.xml               |   26 +
 examples/DDCMS/data/tobrod5h.xml              |  144 ++
 examples/DDCMS/data/tobrod5l.xml              |  144 ++
 examples/DDCMS/data/tobrodpar.xml             |  176 ++
 examples/DDCMS/data/tracker.xml               |   25 +
 examples/DDCMS/data/trackerParameters.xml     |   45 +
 .../DDCMS/data/trackerStructureTopology.xml   |  321 +++
 examples/DDCMS/data/trackerbulkhead.xml       |  293 +++
 examples/DDCMS/data/trackerother.xml          |  388 +++
 examples/DDCMS/data/trackerpixbar.xml         |    9 +
 examples/DDCMS/data/trackerpixfwd.xml         |   20 +
 examples/DDCMS/data/trackertec.xml            |   19 +
 examples/DDCMS/data/trackertib.xml            |    9 +
 examples/DDCMS/data/trackertibtidservices.xml |   14 +
 examples/DDCMS/data/trackertid.xml            |   14 +
 examples/DDCMS/data/trackertob.xml            |    9 +
 198 files changed, 31320 insertions(+), 325 deletions(-)
 create mode 100644 DDCMS/src/plugins/DDTECCoolAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTECModuleAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTECOptoHybAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTECPhiAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTECPhiAltAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTIBLayerAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTIDModuleAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTIDRingAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTOBRodAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTrackerAngular.cpp
 create mode 100644 DDCMS/src/plugins/DDTrackerPhiAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp
 create mode 100644 DDCMS/src/plugins/DDTrackerZPosAlgo.cpp
 rename examples/DDCMS/{CMS-tracker.png => CMS-pixbar.png} (100%)
 create mode 100644 examples/DDCMS/CMS-tracker1.png
 create mode 100644 examples/DDCMS/data/pixfwd.xml
 create mode 100644 examples/DDCMS/data/pixfwdBlade.xml
 create mode 100644 examples/DDCMS/data/pixfwdCommon.xml
 create mode 100644 examples/DDCMS/data/pixfwdCylinder.xml
 create mode 100644 examples/DDCMS/data/pixfwdDisk.xml
 create mode 100644 examples/DDCMS/data/pixfwdNipple.xml
 create mode 100644 examples/DDCMS/data/pixfwdPanel.xml
 create mode 100644 examples/DDCMS/data/pixfwdPanelBase.xml
 create mode 100644 examples/DDCMS/data/pixfwdPlaq.xml
 create mode 100644 examples/DDCMS/data/pixfwdPlaq1x2.xml
 create mode 100644 examples/DDCMS/data/pixfwdPlaq1x5.xml
 create mode 100644 examples/DDCMS/data/pixfwdPlaq2x3.xml
 create mode 100644 examples/DDCMS/data/pixfwdPlaq2x4.xml
 create mode 100644 examples/DDCMS/data/pixfwdPlaq2x5.xml
 create mode 100644 examples/DDCMS/data/pixfwdTest.xml
 create mode 100644 examples/DDCMS/data/tec.xml
 create mode 100644 examples/DDCMS/data/tecbackplate.xml
 create mode 100644 examples/DDCMS/data/tecmaterial.xml
 create mode 100644 examples/DDCMS/data/tecmodpar.xml
 create mode 100644 examples/DDCMS/data/tecmodule0.xml
 create mode 100644 examples/DDCMS/data/tecmodule0r.xml
 create mode 100644 examples/DDCMS/data/tecmodule0s.xml
 create mode 100644 examples/DDCMS/data/tecmodule1.xml
 create mode 100644 examples/DDCMS/data/tecmodule1r.xml
 create mode 100644 examples/DDCMS/data/tecmodule1s.xml
 create mode 100644 examples/DDCMS/data/tecmodule2.xml
 create mode 100644 examples/DDCMS/data/tecmodule3.xml
 create mode 100644 examples/DDCMS/data/tecmodule4.xml
 create mode 100644 examples/DDCMS/data/tecmodule4r.xml
 create mode 100644 examples/DDCMS/data/tecmodule4s.xml
 create mode 100644 examples/DDCMS/data/tecmodule5.xml
 create mode 100644 examples/DDCMS/data/tecmodule6.xml
 create mode 100644 examples/DDCMS/data/tecpetal0.xml
 create mode 100644 examples/DDCMS/data/tecpetal0b.xml
 create mode 100644 examples/DDCMS/data/tecpetal0f.xml
 create mode 100644 examples/DDCMS/data/tecpetal3.xml
 create mode 100644 examples/DDCMS/data/tecpetal3b.xml
 create mode 100644 examples/DDCMS/data/tecpetal3f.xml
 create mode 100644 examples/DDCMS/data/tecpetal6b.xml
 create mode 100644 examples/DDCMS/data/tecpetal6f.xml
 create mode 100644 examples/DDCMS/data/tecpetal8b.xml
 create mode 100644 examples/DDCMS/data/tecpetal8f.xml
 create mode 100644 examples/DDCMS/data/tecpetalb.xml
 create mode 100644 examples/DDCMS/data/tecpetalf.xml
 create mode 100644 examples/DDCMS/data/tecpetpar.xml
 create mode 100644 examples/DDCMS/data/tecring0.xml
 create mode 100644 examples/DDCMS/data/tecring0b.xml
 create mode 100644 examples/DDCMS/data/tecring0f.xml
 create mode 100644 examples/DDCMS/data/tecring1.xml
 create mode 100644 examples/DDCMS/data/tecring1b.xml
 create mode 100644 examples/DDCMS/data/tecring1f.xml
 create mode 100644 examples/DDCMS/data/tecring2.xml
 create mode 100644 examples/DDCMS/data/tecring2b.xml
 create mode 100644 examples/DDCMS/data/tecring2f.xml
 create mode 100644 examples/DDCMS/data/tecring3.xml
 create mode 100644 examples/DDCMS/data/tecring3b.xml
 create mode 100644 examples/DDCMS/data/tecring3f.xml
 create mode 100644 examples/DDCMS/data/tecring4.xml
 create mode 100644 examples/DDCMS/data/tecring4b.xml
 create mode 100644 examples/DDCMS/data/tecring4f.xml
 create mode 100644 examples/DDCMS/data/tecring5.xml
 create mode 100644 examples/DDCMS/data/tecring5b.xml
 create mode 100644 examples/DDCMS/data/tecring5f.xml
 create mode 100644 examples/DDCMS/data/tecring6.xml
 create mode 100644 examples/DDCMS/data/tecring6b.xml
 create mode 100644 examples/DDCMS/data/tecring6f.xml
 create mode 100644 examples/DDCMS/data/tecservices.xml
 create mode 100644 examples/DDCMS/data/tecwheel.xml
 create mode 100644 examples/DDCMS/data/tecwheel6.xml
 create mode 100644 examples/DDCMS/data/tecwheela.xml
 create mode 100644 examples/DDCMS/data/tecwheelb.xml
 create mode 100644 examples/DDCMS/data/tecwheelc.xml
 create mode 100644 examples/DDCMS/data/tecwheeld.xml
 create mode 100644 examples/DDCMS/data/tib.xml
 create mode 100644 examples/DDCMS/data/tiblayer0.xml
 create mode 100644 examples/DDCMS/data/tiblayer1.xml
 create mode 100644 examples/DDCMS/data/tiblayer2.xml
 create mode 100644 examples/DDCMS/data/tiblayer3.xml
 create mode 100644 examples/DDCMS/data/tiblayerpar.xml
 create mode 100644 examples/DDCMS/data/tibmaterial.xml
 create mode 100644 examples/DDCMS/data/tibmodpar.xml
 create mode 100644 examples/DDCMS/data/tibmodule0.xml
 create mode 100644 examples/DDCMS/data/tibmodule0a.xml
 create mode 100644 examples/DDCMS/data/tibmodule0b.xml
 create mode 100644 examples/DDCMS/data/tibmodule2.xml
 create mode 100644 examples/DDCMS/data/tibstring0.xml
 create mode 100644 examples/DDCMS/data/tibstring0ll.xml
 create mode 100644 examples/DDCMS/data/tibstring0lr.xml
 create mode 100644 examples/DDCMS/data/tibstring0ul.xml
 create mode 100644 examples/DDCMS/data/tibstring0ur.xml
 create mode 100644 examples/DDCMS/data/tibstring1.xml
 create mode 100644 examples/DDCMS/data/tibstring1ll.xml
 create mode 100644 examples/DDCMS/data/tibstring1lr.xml
 create mode 100644 examples/DDCMS/data/tibstring1ul.xml
 create mode 100644 examples/DDCMS/data/tibstring1ur.xml
 create mode 100644 examples/DDCMS/data/tibstring2.xml
 create mode 100644 examples/DDCMS/data/tibstring2ll.xml
 create mode 100644 examples/DDCMS/data/tibstring2lr.xml
 create mode 100644 examples/DDCMS/data/tibstring2ul.xml
 create mode 100644 examples/DDCMS/data/tibstring2ur.xml
 create mode 100644 examples/DDCMS/data/tibstring3.xml
 create mode 100644 examples/DDCMS/data/tibstring3ll.xml
 create mode 100644 examples/DDCMS/data/tibstring3lr.xml
 create mode 100644 examples/DDCMS/data/tibstring3ul.xml
 create mode 100644 examples/DDCMS/data/tibstring3ur.xml
 create mode 100644 examples/DDCMS/data/tibstringpar.xml
 create mode 100644 examples/DDCMS/data/tibtidcommonmaterial.xml
 create mode 100644 examples/DDCMS/data/tibtidservices.xml
 create mode 100644 examples/DDCMS/data/tibtidservicesb.xml
 create mode 100644 examples/DDCMS/data/tibtidservicesf.xml
 create mode 100644 examples/DDCMS/data/tid.xml
 create mode 100644 examples/DDCMS/data/tidb.xml
 create mode 100644 examples/DDCMS/data/tidf.xml
 create mode 100644 examples/DDCMS/data/tidmaterial.xml
 create mode 100644 examples/DDCMS/data/tidmodpar.xml
 create mode 100644 examples/DDCMS/data/tidmodule0.xml
 create mode 100644 examples/DDCMS/data/tidmodule0l.xml
 create mode 100644 examples/DDCMS/data/tidmodule0r.xml
 create mode 100644 examples/DDCMS/data/tidmodule1.xml
 create mode 100644 examples/DDCMS/data/tidmodule1l.xml
 create mode 100644 examples/DDCMS/data/tidmodule1r.xml
 create mode 100644 examples/DDCMS/data/tidmodule2.xml
 create mode 100644 examples/DDCMS/data/tidring0.xml
 create mode 100644 examples/DDCMS/data/tidring0b.xml
 create mode 100644 examples/DDCMS/data/tidring0f.xml
 create mode 100644 examples/DDCMS/data/tidring1.xml
 create mode 100644 examples/DDCMS/data/tidring1b.xml
 create mode 100644 examples/DDCMS/data/tidring1f.xml
 create mode 100644 examples/DDCMS/data/tidring2.xml
 create mode 100644 examples/DDCMS/data/tidringpar.xml
 create mode 100644 examples/DDCMS/data/tob.xml
 create mode 100644 examples/DDCMS/data/tobmaterial.xml
 create mode 100644 examples/DDCMS/data/tobmodpar.xml
 create mode 100644 examples/DDCMS/data/tobmodule0.xml
 create mode 100644 examples/DDCMS/data/tobmodule2.xml
 create mode 100644 examples/DDCMS/data/tobmodule4.xml
 create mode 100644 examples/DDCMS/data/tobrod0.xml
 create mode 100644 examples/DDCMS/data/tobrod0c.xml
 create mode 100644 examples/DDCMS/data/tobrod0h.xml
 create mode 100644 examples/DDCMS/data/tobrod0l.xml
 create mode 100644 examples/DDCMS/data/tobrod1.xml
 create mode 100644 examples/DDCMS/data/tobrod1h.xml
 create mode 100644 examples/DDCMS/data/tobrod1l.xml
 create mode 100644 examples/DDCMS/data/tobrod2.xml
 create mode 100644 examples/DDCMS/data/tobrod2c.xml
 create mode 100644 examples/DDCMS/data/tobrod2h.xml
 create mode 100644 examples/DDCMS/data/tobrod2l.xml
 create mode 100644 examples/DDCMS/data/tobrod3.xml
 create mode 100644 examples/DDCMS/data/tobrod3h.xml
 create mode 100644 examples/DDCMS/data/tobrod3l.xml
 create mode 100644 examples/DDCMS/data/tobrod4.xml
 create mode 100644 examples/DDCMS/data/tobrod4c.xml
 create mode 100644 examples/DDCMS/data/tobrod4h.xml
 create mode 100644 examples/DDCMS/data/tobrod4l.xml
 create mode 100644 examples/DDCMS/data/tobrod5.xml
 create mode 100644 examples/DDCMS/data/tobrod5h.xml
 create mode 100644 examples/DDCMS/data/tobrod5l.xml
 create mode 100644 examples/DDCMS/data/tobrodpar.xml
 create mode 100644 examples/DDCMS/data/tracker.xml
 create mode 100644 examples/DDCMS/data/trackerParameters.xml
 create mode 100644 examples/DDCMS/data/trackerStructureTopology.xml
 create mode 100644 examples/DDCMS/data/trackerbulkhead.xml
 create mode 100644 examples/DDCMS/data/trackerother.xml
 create mode 100644 examples/DDCMS/data/trackerpixbar.xml
 create mode 100644 examples/DDCMS/data/trackerpixfwd.xml
 create mode 100644 examples/DDCMS/data/trackertec.xml
 create mode 100644 examples/DDCMS/data/trackertib.xml
 create mode 100644 examples/DDCMS/data/trackertibtidservices.xml
 create mode 100644 examples/DDCMS/data/trackertid.xml
 create mode 100644 examples/DDCMS/data/trackertob.xml

diff --git a/DDCMS/include/DDCMS/DDCMS.h b/DDCMS/include/DDCMS/DDCMS.h
index 5192332eb..7d15a05a7 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 4600936be..b7e1074cd 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 b11ccf673..7cabe3408 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 c7f6a2264..a1dd30929 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 16482c5de..5a4cc790b 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 69c649024..44437faab 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 000000000..6dd9a87fa
--- /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 000000000..4192461ff
--- /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 000000000..76e99613f
--- /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 000000000..85c04c917
--- /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 000000000..b14a52d28
--- /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 000000000..ccc991dff
--- /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 000000000..a820afd62
--- /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 000000000..3437688a8
--- /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 000000000..94642942e
--- /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 000000000..bf6e48c61
--- /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 43c75df70..92b5cef54 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 000000000..c6da02ee7
--- /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 000000000..b56945947
--- /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 000000000..57faf42ec
--- /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 000000000..e375c43dd
--- /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 6daa21d6b..2dd9afd8a 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 e5d8ac848..f7fa8b084 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 adb28c4c7..0a00c5f12 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
GIT binary patch
literal 286691
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%0A~I?t090z&rx>
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
BmZ1Ou

literal 0
HcmV?d00001

diff --git a/examples/DDCMS/data/cms_tracker.xml b/examples/DDCMS/data/cms_tracker.xml
index a48ea6be8..29faa3fdd 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 000000000..ac7603bdd
--- /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 000000000..6588cc68b
--- /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 000000000..dbdc0591f
--- /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 000000000..066d8d527
--- /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 000000000..03f1e3678
--- /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 b450254d8..6fee50e94 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 000000000..631e76dda
--- /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 000000000..7ff4bff90
--- /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 000000000..f57291ff5
--- /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 000000000..afb4bc42e
--- /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 000000000..e1714fe8e
--- /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 000000000..cd09b4f43
--- /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 000000000..a89413618
--- /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 000000000..b274917f4
--- /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 000000000..f39896ab6
--- /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 000000000..913fbb4db
--- /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 000000000..96ef559de
--- /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 000000000..d86aa0415
--- /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 000000000..86e6d1f93
--- /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 000000000..33eec4756
--- /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 000000000..47b24c302
--- /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 000000000..8a8123e21
--- /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 000000000..f6e1dbb86
--- /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 000000000..5729c4432
--- /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 000000000..360f1c0d7
--- /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 000000000..924922b63
--- /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 000000000..d93b88011
--- /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 000000000..8a9f72e5b
--- /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 000000000..343eee586
--- /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 000000000..cf0b2e804
--- /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 000000000..7b6a90020
--- /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 000000000..fdc2102aa
--- /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 000000000..cec2f9cf3
--- /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 000000000..454621bcc
--- /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 000000000..9bc402e1c
--- /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 000000000..6321887fc
--- /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 000000000..14afd9ed6
--- /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 000000000..9ddcc3683
--- /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 000000000..911b40e30
--- /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 000000000..1feee53e3
--- /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 000000000..d24bf152c
--- /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 000000000..475dfb347
--- /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 000000000..144be04eb
--- /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 000000000..29237d876
--- /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 000000000..feab8eb05
--- /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 000000000..48f99c7ac
--- /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 000000000..d88ae18fc
--- /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 000000000..7e261a3ab
--- /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 000000000..f192e88a3
--- /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 000000000..ca79d4e2b
--- /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 000000000..bd0bdf350
--- /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 000000000..5c34a1361
--- /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 000000000..c994a1701
--- /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 000000000..284ea4d8d
--- /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 000000000..30092de9b
--- /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 000000000..01ec44424
--- /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 000000000..4d52db44a
--- /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 000000000..ccfdf78f9
--- /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 000000000..47a3848bb
--- /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 000000000..8fe08dcf1
--- /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 000000000..631d0794a
--- /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 000000000..8ea76d347
--- /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 000000000..cd6ad62db
--- /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 000000000..33c2950f8
--- /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 000000000..04c5fb4a2
--- /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 000000000..10d44efce
--- /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 000000000..a8ad1d960
--- /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 000000000..6a0bf582d
--- /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 000000000..af143d5f5
--- /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 000000000..1cef9866b
--- /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 000000000..9e2a82e67
--- /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 000000000..b1d8a3671
--- /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 000000000..ad99f7da1
--- /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 000000000..92219ea48
--- /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 000000000..e08564124
--- /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 000000000..ded81fc73
--- /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 000000000..19ad1a0f6
--- /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 000000000..23b2e3545
--- /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 000000000..4dec74dfd
--- /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 000000000..ec0a3de58
--- /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 000000000..bbb90689a
--- /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 000000000..a8a5a6093
--- /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 000000000..c0c90dd6d
--- /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 000000000..14ddc7efc
--- /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 000000000..4cb332728
--- /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 000000000..814641d60
--- /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 000000000..d93ea861e
--- /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 000000000..9ae377973
--- /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 000000000..2b5d7c43a
--- /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 000000000..7195346cd
--- /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 000000000..8cf34eee3
--- /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 000000000..6f1fa9b2e
--- /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 000000000..b1aa28171
--- /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 000000000..74409ee8d
--- /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 000000000..e97cfd218
--- /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 000000000..ee26fd649
--- /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 000000000..dfe479b1b
--- /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 000000000..8c58e5ad5
--- /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 000000000..68b943d83
--- /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 000000000..7da6da682
--- /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 000000000..f7432b35e
--- /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 000000000..63b17e298
--- /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 000000000..9e71f99ca
--- /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 000000000..112fcf3ff
--- /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 000000000..37334b4e3
--- /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 000000000..5eff5d77e
--- /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 000000000..3c073613f
--- /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 000000000..e2033d466
--- /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 000000000..a393af62d
--- /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 000000000..96d4029e4
--- /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 000000000..c8c80d03d
--- /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 000000000..14ea05749
--- /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 000000000..2d2bfbffb
--- /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 000000000..2f55447bf
--- /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 000000000..f318846ba
--- /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 000000000..3113c20ed
--- /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 000000000..bf2657b01
--- /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 000000000..ae3289fbe
--- /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 000000000..c37a38ff4
--- /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 000000000..c78deaff7
--- /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 000000000..a3f151deb
--- /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 000000000..2d884bae4
--- /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 000000000..7d9d2ef9d
--- /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 000000000..f42759f4b
--- /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 000000000..6b119b56f
--- /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 000000000..72798fd8e
--- /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 000000000..beaa0f5f5
--- /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 000000000..cdad89830
--- /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 000000000..b23305ca1
--- /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 000000000..e147d6fad
--- /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 000000000..64a57c8ba
--- /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 000000000..d9c4243bd
--- /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 000000000..ac5449870
--- /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 000000000..0a52fe67f
--- /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 000000000..4141dffeb
--- /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 000000000..279b548ba
--- /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 000000000..552a871a3
--- /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 000000000..2fa93358c
--- /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 000000000..4f39d1a11
--- /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 000000000..05c2422e9
--- /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 000000000..a2f04044e
--- /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 000000000..a92e39745
--- /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 000000000..cd8ad1384
--- /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 000000000..776006d83
--- /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 000000000..4328e1110
--- /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 000000000..0ff8d42bd
--- /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 000000000..f84dcc6d5
--- /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 000000000..d7463b981
--- /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 000000000..8e7c0bffb
--- /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 000000000..0a409cb96
--- /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 000000000..3683bac4a
--- /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 000000000..8720763f4
--- /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 000000000..ee8b86f3f
--- /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 000000000..c6e46ad47
--- /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 000000000..3402a4469
--- /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 000000000..63d5a052f
--- /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 000000000..d81623992
--- /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 000000000..b4de5ada1
--- /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 000000000..6680e1258
--- /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 000000000..e3af37e26
--- /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 000000000..162238388
--- /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 000000000..96d7131a0
--- /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 000000000..815328970
--- /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 000000000..485afad32
--- /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 000000000..41c645081
--- /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 000000000..ba606869d
--- /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 000000000..f05001446
--- /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 000000000..0f5a2fee5
--- /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 000000000..17eff4145
--- /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 000000000..6318f4bdc
--- /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 000000000..921eece57
--- /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>
-- 
GitLab