diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91647dd33ff42a423fc8f9b224ef0835eadb5ade..5de9c10e1d854580d13d35c5119c726ca42bee6b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -124,7 +124,6 @@ add_subdirectory(DDG4)
 add_subdirectory(DDCond)
 add_subdirectory(DDAlign)
 add_subdirectory(DDEve)
-add_subdirectory(DDCMS)
 add_subdirectory(DDDB)
 dd4hep_enable_tests( DDTest )
 add_subdirectory(UtilityApps)
diff --git a/DDCMS/CMakeLists.txt b/DDCMS/CMakeLists.txt
deleted file mode 100644
index 5204c63e0aad80e61445d61477306ba93e206d3b..0000000000000000000000000000000000000000
--- a/DDCMS/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-#==========================================================================
-#  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.
-#
-#==========================================================================
-#
-# DDCMS is a detector description convention developed by the CMS experiment.
-#
-#=================================================================================
-
-dd4hep_package(    DDCMS
-  USES             DDCore
-                   [CLHEP REQUIRED]
-  INCLUDE_DIRS     include
-  INSTALL_INCLUDES include/DDCMS)
-
-#
-# We only create only library for DDCMS. The whole package is a single component
-# library. A priory there is no need to seperate the implementation from the
-# plugins....
-#
-# If need arises, this can be changed easily.
-#
-#---DDCMS plugin library -------------------------------------------------------
-dd4hep_add_plugin ( DDCMS SOURCES src/*.cpp src/plugins/*.cpp
-  USES  DDCore DDAlign DDCond )
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 334574fb3db85352e99b673dcdb33d6c5f610378..a3bab747588a4786b326f55b0c693747f1d693aa 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -43,13 +43,16 @@ dd4hep_package ( dd4hepExample MAJOR 0 MINOR 15 PATCH 0
                  [dd4hep REQUIRED COMPONENTS DDCore]
 )
 #
+
+add_subdirectory(DDCMS)
+
 dd4hep_enable_tests (
   CLICSiD
   LHeD
   AlignDet
   ClientTests
   Conditions
-  DDCMS
+  DDCMSTests
   DDDB
   DDG4
   Persistency
diff --git a/examples/DDCMS/CMakeLists.txt b/examples/DDCMS/CMakeLists.txt
index c2233948f841024ba03b8e93c40f986524650b22..b905111e055f0b9203059f486eec57e8fdd46401 100644
--- a/examples/DDCMS/CMakeLists.txt
+++ b/examples/DDCMS/CMakeLists.txt
@@ -1,4 +1,4 @@
-#==========================================================================
+##==========================================================================
 #  AIDA Detector description implementation 
 #--------------------------------------------------------------------------
 # Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
@@ -11,188 +11,23 @@
 #
 # DDCMS is a detector description convention developed by the CMS experiment.
 #
-#==========================================================================
-cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
+#=================================================================================
 
-include ( ${DD4hep_DIR}/cmake/DD4hep.cmake )
-#------------------------------------------------------------------------------
-dd4hep_configure_output ()
-dd4hep_package (DDCMS MAJOR 0 MINOR 0 PATCH 1
-  USES         [ROOT   REQUIRED COMPONENTS Geom GenVector] 
-  [DD4hep REQUIRED COMPONENTS DDCore DDCMS]
-  OPTIONAL     XERCESC
-  INCLUDE_DIRS include )
+dd4hep_package(    DDCMS
+  USES             [DD4hep REQUIRED COMPONENTS DDCore]
+                   [CLHEP REQUIRED]
+		   [ROOT REQUIRED COMPONENTS Geom GenVector]
+  INCLUDE_DIRS     include
+  INSTALL_INCLUDES include/DDCMS)
 
-#------------------------------------------------------------------------------
-dd4hep_add_plugin(DDCMSexample SOURCES src/*.cpp)
-#---Package installation procedure(s) -----------------------------------------
-dd4hep_install_dir( data    DESTINATION ${DD4hep_DIR}/examples/DDCMS )
-dd4hep_install_dir( eve     DESTINATION ${DD4hep_DIR}/examples/DDCMS )
-dd4hep_install_dir( scripts DESTINATION ${DD4hep_DIR}/examples/DDCMS )
-#
-#---Testing--------------------------------------------------------------------
-dd4hep_configure_scripts ( DDCMS DEFAULT_SETUP WITH_TESTS )
-#
-#  Test CMS tracker detector construction
-dd4hep_add_test_reg( DDCMS_LoadGeometry
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/cms_tracker.xml -destroy -print WARNING
-  -plugin DD4hep_PlacedVolumeProcessor -recursive -processor DDCMS_DetElementCreator
-  REGEX_PASS "Instrumented 5 subdetectors with 36091 DetElements 25776 sensitives out of 224404 volumes and 1161 sensitive placements."
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS material table
-dd4hep_add_test_reg( DDCMS_DumpMaterials
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -plugin DD4hep_MaterialTable -type xml
-  REGEX_PASS "material name=\"tobmaterial_TOB_ax_services_C18\""
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS volume tree
-dd4hep_add_test_reg( DDCMS_DumpVolumes
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -plugin DD4hep_VolumeDump -sensitive -volids
-  REGEX_PASS "Checked 224414 physical volume placements.     25776 are sensitive."
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS detector element tree
-dd4hep_add_test_reg( DDCMS_DumpDetElements
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -plugin DD4hep_DetectorDump -sensitive
-  REGEX_PASS "Scanned a total of 36096 elements."
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS detector element tree of SD PixelBarrel
-dd4hep_add_test_reg( DDCMS_VolumeMgrTest_PixelBarrel
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -print WARNING
-  -plugin DD4hep_VolumeMgrTest PixelBarrel_1
-  REGEX_PASS "PASSED: Checked 10981 objects. Num.Errors:0"
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS detector element tree of SD TIB
-dd4hep_add_test_reg( DDCMS_VolumeMgrTest_TIB
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -print WARNING
-  -plugin DD4hep_VolumeMgrTest TIB_1
-  REGEX_PASS "PASSED: Checked 47964 objects. Num.Errors:0"
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS detector element tree of SD TOB
-dd4hep_add_test_reg( DDCMS_VolumeMgrTest_TOB
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -print WARNING
-  -plugin DD4hep_VolumeMgrTest TOB_1
-  REGEX_PASS "PASSED: Checked 150699 objects. Num.Errors:0"
-  REGEX_FAIL "Exception"
-  REGEX_FAIL "FAILED"
-  )
-#
-#  Dump CMS detector element tree of SD TOB
-dd4hep_add_test_reg( DDCMS_Geant4_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/CMSTrackerSim.py batch test numevents 2
-  REGEX_PASS "\\+\\+\\+ Finished run 0 after 2 events \\(2 events in total\\)"
-  REGEX_FAIL "Exception;EXCEPTION;ERROR;FAILED"
-  )
-#
-#  Test saving geometry to ROOT file
-dd4hep_add_test_reg( DDCMS_Persist_Save_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun
-  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
-  -destroy -print WARNING
-  -plugin    DD4hep_Geometry2ROOT -output DDCMS_geometry.root
-  REGEX_PASS "\\+\\+\\+ Successfully saved geometry data to file."
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
-  )
-#
-#  Test restoring geometry from ROOT file: Volume Manager
-dd4hep_add_test_reg( DDCMS_Persist_Restore_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -plugin    DD4hep_RootLoader DDCMS_geometry.root
-  DEPENDS    DDCMS_Persist_Save_LONGTEST
-  REGEX_PASS "\\+\\+\\+ Successfully loaded detector description from file"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
-  )
-#
-#  Test restoring geometry from ROOT file: Volume Manager loading+nominals
-dd4hep_add_test_reg( DDCMS_Persist_Restore_VolMgr1_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -plugin    DD4hep_RootLoader DDCMS_geometry.root
-  -plugin    DD4hep_CheckVolumeManager
-  DEPENDS    DDCMS_Persist_Save_LONGTEST
-  REGEX_PASS "\\+\\+\\+ PASSED Checked 36096 VolumeManager contexts. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
-  )
-#
-#  Test restoring geometry from ROOT file: Test Volume Manager results
-dd4hep_add_test_reg( DDCMS_Persist_Restore_VolMgr2_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -plugin    DD4hep_RootLoader DDCMS_geometry.root
-  -plugin    DD4hep_VolumeMgrTest PixelBarrel_1
-  DEPENDS    DDCMS_Persist_Save_LONGTEST
-  REGEX_PASS "\\+\\+\\+ PASSED: Checked 10981 objects. Num.Errors:0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
-  )
 #
-#  Test restoring geometry from ROOT file: DetElement nominal alignments
-#  Note: BeamCal has a problem. Need to be taken into account
-dd4hep_add_test_reg( DDCMS_Persist_Restore_Nominal_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -plugin    DD4hep_RootLoader DDCMS_geometry.root
-  -plugin    DD4hep_CheckNominals
-  DEPENDS    DDCMS_Persist_Save_LONGTEST
-  REGEX_PASS "\\+\\+\\+ PASSED Checked 25776 DetElements. Num.Errors: 0"
-  )
+# We only create only library for DDCMS. The whole package is a single component
+# library. A priory there is no need to seperate the implementation from the
+# plugins....
 #
-#  Test restoring geometry from ROOT file: Sensitive detectors
-dd4hep_add_test_reg( DDCMS_Persist_Restore_Sensitives_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -plugin    DD4hep_RootLoader DDCMS_geometry.root
-  -plugin    DD4hep_CheckSensitives
-  DEPENDS    DDCMS_Persist_Save_LONGTEST
-  REGEX_PASS "\\+\\+\\+ PASSED Checked 5 SensitiveDetector objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
-  )
+# If need arises, this can be changed easily.
 #
-#  Test restoring geometry from ROOT file: Readout structures
-dd4hep_add_test_reg( DDCMS_Persist_Restore_Readouts_LONGTEST
-  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
-  EXEC_ARGS  geoPluginRun -print WARNING
-  -plugin    DD4hep_RootLoader DDCMS_geometry.root
-  -plugin    DD4hep_CheckReadouts
-  DEPENDS    DDCMS_Persist_Save_LONGTEST
-  REGEX_PASS "\\+\\+\\+ PASSED Checked 5 readout objects. Num.Errors: 0"
-  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
-  )
+#---DDCMS plugin library -------------------------------------------------------
+dd4hep_add_plugin ( DDCMS SOURCES src/*.cpp src/plugins/*.cpp
+  USES  [DD4hep REQUIRED COMPONENTS DDCore DDAlign DDCond]
+        [ROOT REQUIRED COMPONENTS Geom GenVector])
diff --git a/DDCMS/README.txt b/examples/DDCMS/README.txt
similarity index 100%
rename from DDCMS/README.txt
rename to examples/DDCMS/README.txt
diff --git a/DDCMS/include/DDCMS/DDCMS.h b/examples/DDCMS/include/DDCMS/DDCMS.h
similarity index 100%
rename from DDCMS/include/DDCMS/DDCMS.h
rename to examples/DDCMS/include/DDCMS/DDCMS.h
diff --git a/DDCMS/include/DDCMS/DDCMSPlugins.h b/examples/DDCMS/include/DDCMS/DDCMSPlugins.h
similarity index 100%
rename from DDCMS/include/DDCMS/DDCMSPlugins.h
rename to examples/DDCMS/include/DDCMS/DDCMSPlugins.h
diff --git a/DDCMS/include/DDCMS/DDCMSTags.h b/examples/DDCMS/include/DDCMS/DDCMSTags.h
similarity index 100%
rename from DDCMS/include/DDCMS/DDCMSTags.h
rename to examples/DDCMS/include/DDCMS/DDCMSTags.h
diff --git a/DDCMS/src/DDCMS.cpp b/examples/DDCMS/src/DDCMS.cpp
similarity index 100%
rename from DDCMS/src/DDCMS.cpp
rename to examples/DDCMS/src/DDCMS.cpp
diff --git a/DDCMS/src/DDCMSTags.cpp b/examples/DDCMS/src/DDCMSTags.cpp
similarity index 100%
rename from DDCMS/src/DDCMSTags.cpp
rename to examples/DDCMS/src/DDCMSTags.cpp
diff --git a/DDCMS/src/plugins/DDCMSDetElementCreator.cpp b/examples/DDCMS/src/plugins/DDCMSDetElementCreator.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDCMSDetElementCreator.cpp
rename to examples/DDCMS/src/plugins/DDCMSDetElementCreator.cpp
diff --git a/DDCMS/src/plugins/DDDefinitions2Objects.cpp b/examples/DDCMS/src/plugins/DDDefinitions2Objects.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDDefinitions2Objects.cpp
rename to examples/DDCMS/src/plugins/DDDefinitions2Objects.cpp
diff --git a/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp b/examples/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDPixBarLayerAlgo.cpp
rename to examples/DDCMS/src/plugins/DDPixBarLayerAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTECCoolAlgo.cpp b/examples/DDCMS/src/plugins/DDTECCoolAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTECCoolAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTECCoolAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTECModuleAlgo.cpp b/examples/DDCMS/src/plugins/DDTECModuleAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTECModuleAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTECModuleAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTECOptoHybAlgo.cpp b/examples/DDCMS/src/plugins/DDTECOptoHybAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTECOptoHybAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTECOptoHybAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTECPhiAlgo.cpp b/examples/DDCMS/src/plugins/DDTECPhiAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTECPhiAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTECPhiAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTECPhiAltAlgo.cpp b/examples/DDCMS/src/plugins/DDTECPhiAltAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTECPhiAltAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTECPhiAltAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTIBLayerAlgo.cpp b/examples/DDCMS/src/plugins/DDTIBLayerAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTIBLayerAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTIBLayerAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTIDModuleAlgo.cpp b/examples/DDCMS/src/plugins/DDTIDModuleAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTIDModuleAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTIDModuleAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTIDModulePosAlgo.cpp b/examples/DDCMS/src/plugins/DDTIDModulePosAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTIDModulePosAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTIDModulePosAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTIDRingAlgo.cpp b/examples/DDCMS/src/plugins/DDTIDRingAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTIDRingAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTIDRingAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTOBAxCableAlgo.cpp b/examples/DDCMS/src/plugins/DDTOBAxCableAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTOBAxCableAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTOBAxCableAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTOBRadCableAlgo.cpp b/examples/DDCMS/src/plugins/DDTOBRadCableAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTOBRadCableAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTOBRadCableAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTOBRodAlgo.cpp b/examples/DDCMS/src/plugins/DDTOBRodAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTOBRodAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTOBRodAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTrackerAngular.cpp b/examples/DDCMS/src/plugins/DDTrackerAngular.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTrackerAngular.cpp
rename to examples/DDCMS/src/plugins/DDTrackerAngular.cpp
diff --git a/DDCMS/src/plugins/DDTrackerLinear.cpp b/examples/DDCMS/src/plugins/DDTrackerLinear.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTrackerLinear.cpp
rename to examples/DDCMS/src/plugins/DDTrackerLinear.cpp
diff --git a/DDCMS/src/plugins/DDTrackerPhiAlgo.cpp b/examples/DDCMS/src/plugins/DDTrackerPhiAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTrackerPhiAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTrackerPhiAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp b/examples/DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTrackerPhiAltAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp b/examples/DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTrackerXYZPosAlgo.cpp
diff --git a/DDCMS/src/plugins/DDTrackerZPosAlgo.cpp b/examples/DDCMS/src/plugins/DDTrackerZPosAlgo.cpp
similarity index 100%
rename from DDCMS/src/plugins/DDTrackerZPosAlgo.cpp
rename to examples/DDCMS/src/plugins/DDTrackerZPosAlgo.cpp
diff --git a/examples/DDCMS/CMS-pixbar.png b/examples/DDCMSTests/CMS-pixbar.png
similarity index 100%
rename from examples/DDCMS/CMS-pixbar.png
rename to examples/DDCMSTests/CMS-pixbar.png
diff --git a/examples/DDCMS/CMS-tracker-sim-1.png b/examples/DDCMSTests/CMS-tracker-sim-1.png
similarity index 100%
rename from examples/DDCMS/CMS-tracker-sim-1.png
rename to examples/DDCMSTests/CMS-tracker-sim-1.png
diff --git a/examples/DDCMS/CMS-tracker-sim-2.png b/examples/DDCMSTests/CMS-tracker-sim-2.png
similarity index 100%
rename from examples/DDCMS/CMS-tracker-sim-2.png
rename to examples/DDCMSTests/CMS-tracker-sim-2.png
diff --git a/examples/DDCMS/CMS-tracker1.png b/examples/DDCMSTests/CMS-tracker1.png
similarity index 100%
rename from examples/DDCMS/CMS-tracker1.png
rename to examples/DDCMSTests/CMS-tracker1.png
diff --git a/examples/DDCMS/CMS-tracker2.png b/examples/DDCMSTests/CMS-tracker2.png
similarity index 100%
rename from examples/DDCMS/CMS-tracker2.png
rename to examples/DDCMSTests/CMS-tracker2.png
diff --git a/examples/DDCMS/CMS-tracker3.png b/examples/DDCMSTests/CMS-tracker3.png
similarity index 100%
rename from examples/DDCMS/CMS-tracker3.png
rename to examples/DDCMSTests/CMS-tracker3.png
diff --git a/examples/DDCMSTests/CMakeLists.txt b/examples/DDCMSTests/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2dc5e6f7eb12816fbb68f38ce3af04f79305aba6
--- /dev/null
+++ b/examples/DDCMSTests/CMakeLists.txt
@@ -0,0 +1,200 @@
+#==========================================================================
+#  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.
+#
+#==========================================================================
+#
+# DDCMS is a detector description convention developed by the CMS experiment.
+#
+#==========================================================================
+cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
+
+include ( ${DD4hep_DIR}/cmake/DD4hep.cmake )
+#------------------------------------------------------------------------------
+dd4hep_configure_output ()
+dd4hep_package (DDCMSTests MAJOR 0 MINOR 0 PATCH 1
+  USES         DDCMS
+               [ROOT   REQUIRED COMPONENTS Geom GenVector]
+               [DD4hep REQUIRED COMPONENTS DDCore]
+               [CLHEP REQUIRED]
+  OPTIONAL     XERCESC
+  INCLUDE_DIRS include )
+
+#------------------------------------------------------------------------------
+dd4hep_add_plugin(DDCMSTests SOURCES src/*.cpp)
+#---Package installation procedure(s) -----------------------------------------
+dd4hep_install_dir( data    DESTINATION ${DD4hep_DIR}/examples/DDCMS )
+dd4hep_install_dir( eve     DESTINATION ${DD4hep_DIR}/examples/DDCMS )
+dd4hep_install_dir( scripts DESTINATION ${DD4hep_DIR}/examples/DDCMS )
+#
+#---Testing--------------------------------------------------------------------
+dd4hep_configure_scripts ( DDCMS DEFAULT_SETUP WITH_TESTS )
+#
+#  Test CMS tracker detector construction
+dd4hep_add_test_reg( DDCMS_LoadGeometry
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/cms_tracker.xml -destroy -print WARNING
+  -plugin DD4hep_PlacedVolumeProcessor -recursive -processor DDCMS_DetElementCreator
+  REGEX_PASS "Instrumented 5 subdetectors with 36091 DetElements 25776 sensitives out of 224404 volumes and 1161 sensitive placements."
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS material table
+dd4hep_add_test_reg( DDCMS_DumpMaterials
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -plugin DD4hep_MaterialTable -type xml
+  REGEX_PASS "material name=\"tobmaterial_TOB_ax_services_C18\""
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS volume tree
+dd4hep_add_test_reg( DDCMS_DumpVolumes
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -plugin DD4hep_VolumeDump -sensitive -volids
+  REGEX_PASS "Checked 224414 physical volume placements.     25776 are sensitive."
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS detector element tree
+dd4hep_add_test_reg( DDCMS_DumpDetElements
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -plugin DD4hep_DetectorDump -sensitive
+  REGEX_PASS "Scanned a total of 36096 elements."
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS detector element tree of SD PixelBarrel
+dd4hep_add_test_reg( DDCMS_VolumeMgrTest_PixelBarrel
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -print WARNING
+  -plugin DD4hep_VolumeMgrTest PixelBarrel_1
+  REGEX_PASS "PASSED: Checked 10981 objects. Num.Errors:0"
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS detector element tree of SD TIB
+dd4hep_add_test_reg( DDCMS_VolumeMgrTest_TIB
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -print WARNING
+  -plugin DD4hep_VolumeMgrTest TIB_1
+  REGEX_PASS "PASSED: Checked 47964 objects. Num.Errors:0"
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS detector element tree of SD TOB
+dd4hep_add_test_reg( DDCMS_VolumeMgrTest_TOB
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -print WARNING
+  -plugin DD4hep_VolumeMgrTest TOB_1
+  REGEX_PASS "PASSED: Checked 150699 objects. Num.Errors:0"
+  REGEX_FAIL "Exception"
+  REGEX_FAIL "FAILED"
+  )
+#
+#  Dump CMS detector element tree of SD TOB
+dd4hep_add_test_reg( DDCMS_Geant4_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/CMSTrackerSim.py batch test numevents 2
+  REGEX_PASS "\\+\\+\\+ Finished run 0 after 2 events \\(2 events in total\\)"
+  REGEX_FAIL "Exception;EXCEPTION;ERROR;FAILED"
+  )
+#
+#  Test saving geometry to ROOT file
+dd4hep_add_test_reg( DDCMS_Persist_Save_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun
+  -input file:${CMAKE_CURRENT_SOURCE_DIR}/data/dd4hep-config.xml
+  -destroy -print WARNING
+  -plugin    DD4hep_Geometry2ROOT -output DDCMS_geometry.root
+  REGEX_PASS "\\+\\+\\+ Successfully saved geometry data to file."
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  )
+#
+#  Test restoring geometry from ROOT file: Volume Manager
+dd4hep_add_test_reg( DDCMS_Persist_Restore_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -plugin    DD4hep_RootLoader DDCMS_geometry.root
+  DEPENDS    DDCMS_Persist_Save_LONGTEST
+  REGEX_PASS "\\+\\+\\+ Successfully loaded detector description from file"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  )
+#
+#  Test restoring geometry from ROOT file: Volume Manager loading+nominals
+dd4hep_add_test_reg( DDCMS_Persist_Restore_VolMgr1_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -plugin    DD4hep_RootLoader DDCMS_geometry.root
+  -plugin    DD4hep_CheckVolumeManager
+  DEPENDS    DDCMS_Persist_Save_LONGTEST
+  REGEX_PASS "\\+\\+\\+ PASSED Checked 36096 VolumeManager contexts. Num.Errors: 0"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  )
+#
+#  Test restoring geometry from ROOT file: Test Volume Manager results
+dd4hep_add_test_reg( DDCMS_Persist_Restore_VolMgr2_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -plugin    DD4hep_RootLoader DDCMS_geometry.root
+  -plugin    DD4hep_VolumeMgrTest PixelBarrel_1
+  DEPENDS    DDCMS_Persist_Save_LONGTEST
+  REGEX_PASS "\\+\\+\\+ PASSED: Checked 10981 objects. Num.Errors:0"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  )
+#
+#  Test restoring geometry from ROOT file: DetElement nominal alignments
+#  Note: BeamCal has a problem. Need to be taken into account
+dd4hep_add_test_reg( DDCMS_Persist_Restore_Nominal_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -plugin    DD4hep_RootLoader DDCMS_geometry.root
+  -plugin    DD4hep_CheckNominals
+  DEPENDS    DDCMS_Persist_Save_LONGTEST
+  REGEX_PASS "\\+\\+\\+ PASSED Checked 25776 DetElements. Num.Errors: 0"
+  )
+#
+#  Test restoring geometry from ROOT file: Sensitive detectors
+dd4hep_add_test_reg( DDCMS_Persist_Restore_Sensitives_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -plugin    DD4hep_RootLoader DDCMS_geometry.root
+  -plugin    DD4hep_CheckSensitives
+  DEPENDS    DDCMS_Persist_Save_LONGTEST
+  REGEX_PASS "\\+\\+\\+ PASSED Checked 5 SensitiveDetector objects. Num.Errors: 0"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  )
+#
+#  Test restoring geometry from ROOT file: Readout structures
+dd4hep_add_test_reg( DDCMS_Persist_Restore_Readouts_LONGTEST
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_DDCMS.sh"
+  EXEC_ARGS  geoPluginRun -print WARNING
+  -plugin    DD4hep_RootLoader DDCMS_geometry.root
+  -plugin    DD4hep_CheckReadouts
+  DEPENDS    DDCMS_Persist_Save_LONGTEST
+  REGEX_PASS "\\+\\+\\+ PASSED Checked 5 readout objects. Num.Errors: 0"
+  REGEX_FAIL " ERROR ;EXCEPTION;Exception;FAILED"
+  )
diff --git a/examples/DDCMSTests/README.txt b/examples/DDCMSTests/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7f84b2ab94951fb6924dd25828540075e89061b2
--- /dev/null
+++ b/examples/DDCMSTests/README.txt
@@ -0,0 +1,18 @@
+Package DDCMS
+=============
+
+This is a small test development to demonstrate how to
+convert a small part of the CMS geometry to DD4hep.
+It is by no means complete.
+
+         M.Frank,   September 2017
+         
+
+geoPluginRun -input file:checkout/examples/DDCMS/data/cms_tracker.xml \
+             -ui -interpreter \
+             -plugin DD4hep_PlacedVolumeProcessor -recursive -processor DDCMS_DetElementCreator \
+             -plugin DD4hep_VolumeManager \
+             -plugin DD4hep_DetectorDump -sensitive \
+             -plugin DD4hep_VolumeDump   -sensitive -volids \
+             -plugin DD4hep_GeometryDisplay
+             -end-plugin
diff --git a/examples/DDCMS/data/cms.xml b/examples/DDCMSTests/data/cms.xml
similarity index 100%
rename from examples/DDCMS/data/cms.xml
rename to examples/DDCMSTests/data/cms.xml
diff --git a/examples/DDCMS/data/cms_tracker.xml b/examples/DDCMSTests/data/cms_tracker.xml
similarity index 100%
rename from examples/DDCMS/data/cms_tracker.xml
rename to examples/DDCMSTests/data/cms_tracker.xml
diff --git a/examples/DDCMS/data/cmsextent.xml b/examples/DDCMSTests/data/cmsextent.xml
similarity index 100%
rename from examples/DDCMS/data/cmsextent.xml
rename to examples/DDCMSTests/data/cmsextent.xml
diff --git a/examples/DDCMS/data/dd4hep-config.xml b/examples/DDCMSTests/data/dd4hep-config.xml
similarity index 100%
rename from examples/DDCMS/data/dd4hep-config.xml
rename to examples/DDCMSTests/data/dd4hep-config.xml
diff --git a/examples/DDCMS/data/materials.xml b/examples/DDCMSTests/data/materials.xml
similarity index 100%
rename from examples/DDCMS/data/materials.xml
rename to examples/DDCMSTests/data/materials.xml
diff --git a/examples/DDCMS/data/pixbar.xml b/examples/DDCMSTests/data/pixbar.xml
similarity index 100%
rename from examples/DDCMS/data/pixbar.xml
rename to examples/DDCMSTests/data/pixbar.xml
diff --git a/examples/DDCMS/data/pixbarladder.xml b/examples/DDCMSTests/data/pixbarladder.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarladder.xml
rename to examples/DDCMSTests/data/pixbarladder.xml
diff --git a/examples/DDCMS/data/pixbarladderfull.xml b/examples/DDCMSTests/data/pixbarladderfull.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarladderfull.xml
rename to examples/DDCMSTests/data/pixbarladderfull.xml
diff --git a/examples/DDCMS/data/pixbarladderhalf.xml b/examples/DDCMSTests/data/pixbarladderhalf.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarladderhalf.xml
rename to examples/DDCMSTests/data/pixbarladderhalf.xml
diff --git a/examples/DDCMS/data/pixbarlayer.xml b/examples/DDCMSTests/data/pixbarlayer.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarlayer.xml
rename to examples/DDCMSTests/data/pixbarlayer.xml
diff --git a/examples/DDCMS/data/pixbarlayer0.xml b/examples/DDCMSTests/data/pixbarlayer0.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarlayer0.xml
rename to examples/DDCMSTests/data/pixbarlayer0.xml
diff --git a/examples/DDCMS/data/pixbarlayer1.xml b/examples/DDCMSTests/data/pixbarlayer1.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarlayer1.xml
rename to examples/DDCMSTests/data/pixbarlayer1.xml
diff --git a/examples/DDCMS/data/pixbarlayer2.xml b/examples/DDCMSTests/data/pixbarlayer2.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarlayer2.xml
rename to examples/DDCMSTests/data/pixbarlayer2.xml
diff --git a/examples/DDCMS/data/pixbarmaterial.xml b/examples/DDCMSTests/data/pixbarmaterial.xml
similarity index 100%
rename from examples/DDCMS/data/pixbarmaterial.xml
rename to examples/DDCMSTests/data/pixbarmaterial.xml
diff --git a/examples/DDCMS/data/pixfwd.xml b/examples/DDCMSTests/data/pixfwd.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwd.xml
rename to examples/DDCMSTests/data/pixfwd.xml
diff --git a/examples/DDCMS/data/pixfwdBlade.xml b/examples/DDCMSTests/data/pixfwdBlade.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdBlade.xml
rename to examples/DDCMSTests/data/pixfwdBlade.xml
diff --git a/examples/DDCMS/data/pixfwdCommon.xml b/examples/DDCMSTests/data/pixfwdCommon.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdCommon.xml
rename to examples/DDCMSTests/data/pixfwdCommon.xml
diff --git a/examples/DDCMS/data/pixfwdCylinder.xml b/examples/DDCMSTests/data/pixfwdCylinder.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdCylinder.xml
rename to examples/DDCMSTests/data/pixfwdCylinder.xml
diff --git a/examples/DDCMS/data/pixfwdDisk.xml b/examples/DDCMSTests/data/pixfwdDisk.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdDisk.xml
rename to examples/DDCMSTests/data/pixfwdDisk.xml
diff --git a/examples/DDCMS/data/pixfwdMaterials.xml b/examples/DDCMSTests/data/pixfwdMaterials.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdMaterials.xml
rename to examples/DDCMSTests/data/pixfwdMaterials.xml
diff --git a/examples/DDCMS/data/pixfwdNipple.xml b/examples/DDCMSTests/data/pixfwdNipple.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdNipple.xml
rename to examples/DDCMSTests/data/pixfwdNipple.xml
diff --git a/examples/DDCMS/data/pixfwdPanel.xml b/examples/DDCMSTests/data/pixfwdPanel.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPanel.xml
rename to examples/DDCMSTests/data/pixfwdPanel.xml
diff --git a/examples/DDCMS/data/pixfwdPanelBase.xml b/examples/DDCMSTests/data/pixfwdPanelBase.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPanelBase.xml
rename to examples/DDCMSTests/data/pixfwdPanelBase.xml
diff --git a/examples/DDCMS/data/pixfwdPlaq.xml b/examples/DDCMSTests/data/pixfwdPlaq.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPlaq.xml
rename to examples/DDCMSTests/data/pixfwdPlaq.xml
diff --git a/examples/DDCMS/data/pixfwdPlaq1x2.xml b/examples/DDCMSTests/data/pixfwdPlaq1x2.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPlaq1x2.xml
rename to examples/DDCMSTests/data/pixfwdPlaq1x2.xml
diff --git a/examples/DDCMS/data/pixfwdPlaq1x5.xml b/examples/DDCMSTests/data/pixfwdPlaq1x5.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPlaq1x5.xml
rename to examples/DDCMSTests/data/pixfwdPlaq1x5.xml
diff --git a/examples/DDCMS/data/pixfwdPlaq2x3.xml b/examples/DDCMSTests/data/pixfwdPlaq2x3.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPlaq2x3.xml
rename to examples/DDCMSTests/data/pixfwdPlaq2x3.xml
diff --git a/examples/DDCMS/data/pixfwdPlaq2x4.xml b/examples/DDCMSTests/data/pixfwdPlaq2x4.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPlaq2x4.xml
rename to examples/DDCMSTests/data/pixfwdPlaq2x4.xml
diff --git a/examples/DDCMS/data/pixfwdPlaq2x5.xml b/examples/DDCMSTests/data/pixfwdPlaq2x5.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdPlaq2x5.xml
rename to examples/DDCMSTests/data/pixfwdPlaq2x5.xml
diff --git a/examples/DDCMS/data/pixfwdTest.xml b/examples/DDCMSTests/data/pixfwdTest.xml
similarity index 100%
rename from examples/DDCMS/data/pixfwdTest.xml
rename to examples/DDCMSTests/data/pixfwdTest.xml
diff --git a/examples/DDCMS/data/tec.xml b/examples/DDCMSTests/data/tec.xml
similarity index 100%
rename from examples/DDCMS/data/tec.xml
rename to examples/DDCMSTests/data/tec.xml
diff --git a/examples/DDCMS/data/tecbackplate.xml b/examples/DDCMSTests/data/tecbackplate.xml
similarity index 100%
rename from examples/DDCMS/data/tecbackplate.xml
rename to examples/DDCMSTests/data/tecbackplate.xml
diff --git a/examples/DDCMS/data/tecmaterial.xml b/examples/DDCMSTests/data/tecmaterial.xml
similarity index 100%
rename from examples/DDCMS/data/tecmaterial.xml
rename to examples/DDCMSTests/data/tecmaterial.xml
diff --git a/examples/DDCMS/data/tecmodpar.xml b/examples/DDCMSTests/data/tecmodpar.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodpar.xml
rename to examples/DDCMSTests/data/tecmodpar.xml
diff --git a/examples/DDCMS/data/tecmodule0.xml b/examples/DDCMSTests/data/tecmodule0.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule0.xml
rename to examples/DDCMSTests/data/tecmodule0.xml
diff --git a/examples/DDCMS/data/tecmodule0r.xml b/examples/DDCMSTests/data/tecmodule0r.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule0r.xml
rename to examples/DDCMSTests/data/tecmodule0r.xml
diff --git a/examples/DDCMS/data/tecmodule0s.xml b/examples/DDCMSTests/data/tecmodule0s.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule0s.xml
rename to examples/DDCMSTests/data/tecmodule0s.xml
diff --git a/examples/DDCMS/data/tecmodule1.xml b/examples/DDCMSTests/data/tecmodule1.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule1.xml
rename to examples/DDCMSTests/data/tecmodule1.xml
diff --git a/examples/DDCMS/data/tecmodule1r.xml b/examples/DDCMSTests/data/tecmodule1r.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule1r.xml
rename to examples/DDCMSTests/data/tecmodule1r.xml
diff --git a/examples/DDCMS/data/tecmodule1s.xml b/examples/DDCMSTests/data/tecmodule1s.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule1s.xml
rename to examples/DDCMSTests/data/tecmodule1s.xml
diff --git a/examples/DDCMS/data/tecmodule2.xml b/examples/DDCMSTests/data/tecmodule2.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule2.xml
rename to examples/DDCMSTests/data/tecmodule2.xml
diff --git a/examples/DDCMS/data/tecmodule3.xml b/examples/DDCMSTests/data/tecmodule3.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule3.xml
rename to examples/DDCMSTests/data/tecmodule3.xml
diff --git a/examples/DDCMS/data/tecmodule4.xml b/examples/DDCMSTests/data/tecmodule4.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule4.xml
rename to examples/DDCMSTests/data/tecmodule4.xml
diff --git a/examples/DDCMS/data/tecmodule4r.xml b/examples/DDCMSTests/data/tecmodule4r.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule4r.xml
rename to examples/DDCMSTests/data/tecmodule4r.xml
diff --git a/examples/DDCMS/data/tecmodule4s.xml b/examples/DDCMSTests/data/tecmodule4s.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule4s.xml
rename to examples/DDCMSTests/data/tecmodule4s.xml
diff --git a/examples/DDCMS/data/tecmodule5.xml b/examples/DDCMSTests/data/tecmodule5.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule5.xml
rename to examples/DDCMSTests/data/tecmodule5.xml
diff --git a/examples/DDCMS/data/tecmodule6.xml b/examples/DDCMSTests/data/tecmodule6.xml
similarity index 100%
rename from examples/DDCMS/data/tecmodule6.xml
rename to examples/DDCMSTests/data/tecmodule6.xml
diff --git a/examples/DDCMS/data/tecpetal0.xml b/examples/DDCMSTests/data/tecpetal0.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal0.xml
rename to examples/DDCMSTests/data/tecpetal0.xml
diff --git a/examples/DDCMS/data/tecpetal0b.xml b/examples/DDCMSTests/data/tecpetal0b.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal0b.xml
rename to examples/DDCMSTests/data/tecpetal0b.xml
diff --git a/examples/DDCMS/data/tecpetal0f.xml b/examples/DDCMSTests/data/tecpetal0f.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal0f.xml
rename to examples/DDCMSTests/data/tecpetal0f.xml
diff --git a/examples/DDCMS/data/tecpetal3.xml b/examples/DDCMSTests/data/tecpetal3.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal3.xml
rename to examples/DDCMSTests/data/tecpetal3.xml
diff --git a/examples/DDCMS/data/tecpetal3b.xml b/examples/DDCMSTests/data/tecpetal3b.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal3b.xml
rename to examples/DDCMSTests/data/tecpetal3b.xml
diff --git a/examples/DDCMS/data/tecpetal3f.xml b/examples/DDCMSTests/data/tecpetal3f.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal3f.xml
rename to examples/DDCMSTests/data/tecpetal3f.xml
diff --git a/examples/DDCMS/data/tecpetal6b.xml b/examples/DDCMSTests/data/tecpetal6b.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal6b.xml
rename to examples/DDCMSTests/data/tecpetal6b.xml
diff --git a/examples/DDCMS/data/tecpetal6f.xml b/examples/DDCMSTests/data/tecpetal6f.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal6f.xml
rename to examples/DDCMSTests/data/tecpetal6f.xml
diff --git a/examples/DDCMS/data/tecpetal8b.xml b/examples/DDCMSTests/data/tecpetal8b.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal8b.xml
rename to examples/DDCMSTests/data/tecpetal8b.xml
diff --git a/examples/DDCMS/data/tecpetal8f.xml b/examples/DDCMSTests/data/tecpetal8f.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetal8f.xml
rename to examples/DDCMSTests/data/tecpetal8f.xml
diff --git a/examples/DDCMS/data/tecpetalb.xml b/examples/DDCMSTests/data/tecpetalb.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetalb.xml
rename to examples/DDCMSTests/data/tecpetalb.xml
diff --git a/examples/DDCMS/data/tecpetalf.xml b/examples/DDCMSTests/data/tecpetalf.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetalf.xml
rename to examples/DDCMSTests/data/tecpetalf.xml
diff --git a/examples/DDCMS/data/tecpetpar.xml b/examples/DDCMSTests/data/tecpetpar.xml
similarity index 100%
rename from examples/DDCMS/data/tecpetpar.xml
rename to examples/DDCMSTests/data/tecpetpar.xml
diff --git a/examples/DDCMS/data/tecring0.xml b/examples/DDCMSTests/data/tecring0.xml
similarity index 100%
rename from examples/DDCMS/data/tecring0.xml
rename to examples/DDCMSTests/data/tecring0.xml
diff --git a/examples/DDCMS/data/tecring0b.xml b/examples/DDCMSTests/data/tecring0b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring0b.xml
rename to examples/DDCMSTests/data/tecring0b.xml
diff --git a/examples/DDCMS/data/tecring0f.xml b/examples/DDCMSTests/data/tecring0f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring0f.xml
rename to examples/DDCMSTests/data/tecring0f.xml
diff --git a/examples/DDCMS/data/tecring1.xml b/examples/DDCMSTests/data/tecring1.xml
similarity index 100%
rename from examples/DDCMS/data/tecring1.xml
rename to examples/DDCMSTests/data/tecring1.xml
diff --git a/examples/DDCMS/data/tecring1b.xml b/examples/DDCMSTests/data/tecring1b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring1b.xml
rename to examples/DDCMSTests/data/tecring1b.xml
diff --git a/examples/DDCMS/data/tecring1f.xml b/examples/DDCMSTests/data/tecring1f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring1f.xml
rename to examples/DDCMSTests/data/tecring1f.xml
diff --git a/examples/DDCMS/data/tecring2.xml b/examples/DDCMSTests/data/tecring2.xml
similarity index 100%
rename from examples/DDCMS/data/tecring2.xml
rename to examples/DDCMSTests/data/tecring2.xml
diff --git a/examples/DDCMS/data/tecring2b.xml b/examples/DDCMSTests/data/tecring2b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring2b.xml
rename to examples/DDCMSTests/data/tecring2b.xml
diff --git a/examples/DDCMS/data/tecring2f.xml b/examples/DDCMSTests/data/tecring2f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring2f.xml
rename to examples/DDCMSTests/data/tecring2f.xml
diff --git a/examples/DDCMS/data/tecring3.xml b/examples/DDCMSTests/data/tecring3.xml
similarity index 100%
rename from examples/DDCMS/data/tecring3.xml
rename to examples/DDCMSTests/data/tecring3.xml
diff --git a/examples/DDCMS/data/tecring3b.xml b/examples/DDCMSTests/data/tecring3b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring3b.xml
rename to examples/DDCMSTests/data/tecring3b.xml
diff --git a/examples/DDCMS/data/tecring3f.xml b/examples/DDCMSTests/data/tecring3f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring3f.xml
rename to examples/DDCMSTests/data/tecring3f.xml
diff --git a/examples/DDCMS/data/tecring4.xml b/examples/DDCMSTests/data/tecring4.xml
similarity index 100%
rename from examples/DDCMS/data/tecring4.xml
rename to examples/DDCMSTests/data/tecring4.xml
diff --git a/examples/DDCMS/data/tecring4b.xml b/examples/DDCMSTests/data/tecring4b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring4b.xml
rename to examples/DDCMSTests/data/tecring4b.xml
diff --git a/examples/DDCMS/data/tecring4f.xml b/examples/DDCMSTests/data/tecring4f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring4f.xml
rename to examples/DDCMSTests/data/tecring4f.xml
diff --git a/examples/DDCMS/data/tecring5.xml b/examples/DDCMSTests/data/tecring5.xml
similarity index 100%
rename from examples/DDCMS/data/tecring5.xml
rename to examples/DDCMSTests/data/tecring5.xml
diff --git a/examples/DDCMS/data/tecring5b.xml b/examples/DDCMSTests/data/tecring5b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring5b.xml
rename to examples/DDCMSTests/data/tecring5b.xml
diff --git a/examples/DDCMS/data/tecring5f.xml b/examples/DDCMSTests/data/tecring5f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring5f.xml
rename to examples/DDCMSTests/data/tecring5f.xml
diff --git a/examples/DDCMS/data/tecring6.xml b/examples/DDCMSTests/data/tecring6.xml
similarity index 100%
rename from examples/DDCMS/data/tecring6.xml
rename to examples/DDCMSTests/data/tecring6.xml
diff --git a/examples/DDCMS/data/tecring6b.xml b/examples/DDCMSTests/data/tecring6b.xml
similarity index 100%
rename from examples/DDCMS/data/tecring6b.xml
rename to examples/DDCMSTests/data/tecring6b.xml
diff --git a/examples/DDCMS/data/tecring6f.xml b/examples/DDCMSTests/data/tecring6f.xml
similarity index 100%
rename from examples/DDCMS/data/tecring6f.xml
rename to examples/DDCMSTests/data/tecring6f.xml
diff --git a/examples/DDCMS/data/tecservices.xml b/examples/DDCMSTests/data/tecservices.xml
similarity index 100%
rename from examples/DDCMS/data/tecservices.xml
rename to examples/DDCMSTests/data/tecservices.xml
diff --git a/examples/DDCMS/data/tecwheel.xml b/examples/DDCMSTests/data/tecwheel.xml
similarity index 100%
rename from examples/DDCMS/data/tecwheel.xml
rename to examples/DDCMSTests/data/tecwheel.xml
diff --git a/examples/DDCMS/data/tecwheel6.xml b/examples/DDCMSTests/data/tecwheel6.xml
similarity index 100%
rename from examples/DDCMS/data/tecwheel6.xml
rename to examples/DDCMSTests/data/tecwheel6.xml
diff --git a/examples/DDCMS/data/tecwheela.xml b/examples/DDCMSTests/data/tecwheela.xml
similarity index 100%
rename from examples/DDCMS/data/tecwheela.xml
rename to examples/DDCMSTests/data/tecwheela.xml
diff --git a/examples/DDCMS/data/tecwheelb.xml b/examples/DDCMSTests/data/tecwheelb.xml
similarity index 100%
rename from examples/DDCMS/data/tecwheelb.xml
rename to examples/DDCMSTests/data/tecwheelb.xml
diff --git a/examples/DDCMS/data/tecwheelc.xml b/examples/DDCMSTests/data/tecwheelc.xml
similarity index 100%
rename from examples/DDCMS/data/tecwheelc.xml
rename to examples/DDCMSTests/data/tecwheelc.xml
diff --git a/examples/DDCMS/data/tecwheeld.xml b/examples/DDCMSTests/data/tecwheeld.xml
similarity index 100%
rename from examples/DDCMS/data/tecwheeld.xml
rename to examples/DDCMSTests/data/tecwheeld.xml
diff --git a/examples/DDCMS/data/tib.xml b/examples/DDCMSTests/data/tib.xml
similarity index 100%
rename from examples/DDCMS/data/tib.xml
rename to examples/DDCMSTests/data/tib.xml
diff --git a/examples/DDCMS/data/tiblayer0.xml b/examples/DDCMSTests/data/tiblayer0.xml
similarity index 100%
rename from examples/DDCMS/data/tiblayer0.xml
rename to examples/DDCMSTests/data/tiblayer0.xml
diff --git a/examples/DDCMS/data/tiblayer1.xml b/examples/DDCMSTests/data/tiblayer1.xml
similarity index 100%
rename from examples/DDCMS/data/tiblayer1.xml
rename to examples/DDCMSTests/data/tiblayer1.xml
diff --git a/examples/DDCMS/data/tiblayer2.xml b/examples/DDCMSTests/data/tiblayer2.xml
similarity index 100%
rename from examples/DDCMS/data/tiblayer2.xml
rename to examples/DDCMSTests/data/tiblayer2.xml
diff --git a/examples/DDCMS/data/tiblayer3.xml b/examples/DDCMSTests/data/tiblayer3.xml
similarity index 100%
rename from examples/DDCMS/data/tiblayer3.xml
rename to examples/DDCMSTests/data/tiblayer3.xml
diff --git a/examples/DDCMS/data/tiblayerpar.xml b/examples/DDCMSTests/data/tiblayerpar.xml
similarity index 100%
rename from examples/DDCMS/data/tiblayerpar.xml
rename to examples/DDCMSTests/data/tiblayerpar.xml
diff --git a/examples/DDCMS/data/tibmaterial.xml b/examples/DDCMSTests/data/tibmaterial.xml
similarity index 100%
rename from examples/DDCMS/data/tibmaterial.xml
rename to examples/DDCMSTests/data/tibmaterial.xml
diff --git a/examples/DDCMS/data/tibmodpar.xml b/examples/DDCMSTests/data/tibmodpar.xml
similarity index 100%
rename from examples/DDCMS/data/tibmodpar.xml
rename to examples/DDCMSTests/data/tibmodpar.xml
diff --git a/examples/DDCMS/data/tibmodule0.xml b/examples/DDCMSTests/data/tibmodule0.xml
similarity index 100%
rename from examples/DDCMS/data/tibmodule0.xml
rename to examples/DDCMSTests/data/tibmodule0.xml
diff --git a/examples/DDCMS/data/tibmodule0a.xml b/examples/DDCMSTests/data/tibmodule0a.xml
similarity index 100%
rename from examples/DDCMS/data/tibmodule0a.xml
rename to examples/DDCMSTests/data/tibmodule0a.xml
diff --git a/examples/DDCMS/data/tibmodule0b.xml b/examples/DDCMSTests/data/tibmodule0b.xml
similarity index 100%
rename from examples/DDCMS/data/tibmodule0b.xml
rename to examples/DDCMSTests/data/tibmodule0b.xml
diff --git a/examples/DDCMS/data/tibmodule2.xml b/examples/DDCMSTests/data/tibmodule2.xml
similarity index 100%
rename from examples/DDCMS/data/tibmodule2.xml
rename to examples/DDCMSTests/data/tibmodule2.xml
diff --git a/examples/DDCMS/data/tibstring0.xml b/examples/DDCMSTests/data/tibstring0.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring0.xml
rename to examples/DDCMSTests/data/tibstring0.xml
diff --git a/examples/DDCMS/data/tibstring0ll.xml b/examples/DDCMSTests/data/tibstring0ll.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring0ll.xml
rename to examples/DDCMSTests/data/tibstring0ll.xml
diff --git a/examples/DDCMS/data/tibstring0lr.xml b/examples/DDCMSTests/data/tibstring0lr.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring0lr.xml
rename to examples/DDCMSTests/data/tibstring0lr.xml
diff --git a/examples/DDCMS/data/tibstring0ul.xml b/examples/DDCMSTests/data/tibstring0ul.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring0ul.xml
rename to examples/DDCMSTests/data/tibstring0ul.xml
diff --git a/examples/DDCMS/data/tibstring0ur.xml b/examples/DDCMSTests/data/tibstring0ur.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring0ur.xml
rename to examples/DDCMSTests/data/tibstring0ur.xml
diff --git a/examples/DDCMS/data/tibstring1.xml b/examples/DDCMSTests/data/tibstring1.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring1.xml
rename to examples/DDCMSTests/data/tibstring1.xml
diff --git a/examples/DDCMS/data/tibstring1ll.xml b/examples/DDCMSTests/data/tibstring1ll.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring1ll.xml
rename to examples/DDCMSTests/data/tibstring1ll.xml
diff --git a/examples/DDCMS/data/tibstring1lr.xml b/examples/DDCMSTests/data/tibstring1lr.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring1lr.xml
rename to examples/DDCMSTests/data/tibstring1lr.xml
diff --git a/examples/DDCMS/data/tibstring1ul.xml b/examples/DDCMSTests/data/tibstring1ul.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring1ul.xml
rename to examples/DDCMSTests/data/tibstring1ul.xml
diff --git a/examples/DDCMS/data/tibstring1ur.xml b/examples/DDCMSTests/data/tibstring1ur.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring1ur.xml
rename to examples/DDCMSTests/data/tibstring1ur.xml
diff --git a/examples/DDCMS/data/tibstring2.xml b/examples/DDCMSTests/data/tibstring2.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring2.xml
rename to examples/DDCMSTests/data/tibstring2.xml
diff --git a/examples/DDCMS/data/tibstring2ll.xml b/examples/DDCMSTests/data/tibstring2ll.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring2ll.xml
rename to examples/DDCMSTests/data/tibstring2ll.xml
diff --git a/examples/DDCMS/data/tibstring2lr.xml b/examples/DDCMSTests/data/tibstring2lr.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring2lr.xml
rename to examples/DDCMSTests/data/tibstring2lr.xml
diff --git a/examples/DDCMS/data/tibstring2ul.xml b/examples/DDCMSTests/data/tibstring2ul.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring2ul.xml
rename to examples/DDCMSTests/data/tibstring2ul.xml
diff --git a/examples/DDCMS/data/tibstring2ur.xml b/examples/DDCMSTests/data/tibstring2ur.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring2ur.xml
rename to examples/DDCMSTests/data/tibstring2ur.xml
diff --git a/examples/DDCMS/data/tibstring3.xml b/examples/DDCMSTests/data/tibstring3.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring3.xml
rename to examples/DDCMSTests/data/tibstring3.xml
diff --git a/examples/DDCMS/data/tibstring3ll.xml b/examples/DDCMSTests/data/tibstring3ll.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring3ll.xml
rename to examples/DDCMSTests/data/tibstring3ll.xml
diff --git a/examples/DDCMS/data/tibstring3lr.xml b/examples/DDCMSTests/data/tibstring3lr.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring3lr.xml
rename to examples/DDCMSTests/data/tibstring3lr.xml
diff --git a/examples/DDCMS/data/tibstring3ul.xml b/examples/DDCMSTests/data/tibstring3ul.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring3ul.xml
rename to examples/DDCMSTests/data/tibstring3ul.xml
diff --git a/examples/DDCMS/data/tibstring3ur.xml b/examples/DDCMSTests/data/tibstring3ur.xml
similarity index 100%
rename from examples/DDCMS/data/tibstring3ur.xml
rename to examples/DDCMSTests/data/tibstring3ur.xml
diff --git a/examples/DDCMS/data/tibstringpar.xml b/examples/DDCMSTests/data/tibstringpar.xml
similarity index 100%
rename from examples/DDCMS/data/tibstringpar.xml
rename to examples/DDCMSTests/data/tibstringpar.xml
diff --git a/examples/DDCMS/data/tibtidcommonmaterial.xml b/examples/DDCMSTests/data/tibtidcommonmaterial.xml
similarity index 100%
rename from examples/DDCMS/data/tibtidcommonmaterial.xml
rename to examples/DDCMSTests/data/tibtidcommonmaterial.xml
diff --git a/examples/DDCMS/data/tibtidservices.xml b/examples/DDCMSTests/data/tibtidservices.xml
similarity index 100%
rename from examples/DDCMS/data/tibtidservices.xml
rename to examples/DDCMSTests/data/tibtidservices.xml
diff --git a/examples/DDCMS/data/tibtidservicesb.xml b/examples/DDCMSTests/data/tibtidservicesb.xml
similarity index 100%
rename from examples/DDCMS/data/tibtidservicesb.xml
rename to examples/DDCMSTests/data/tibtidservicesb.xml
diff --git a/examples/DDCMS/data/tibtidservicesf.xml b/examples/DDCMSTests/data/tibtidservicesf.xml
similarity index 100%
rename from examples/DDCMS/data/tibtidservicesf.xml
rename to examples/DDCMSTests/data/tibtidservicesf.xml
diff --git a/examples/DDCMS/data/tid.xml b/examples/DDCMSTests/data/tid.xml
similarity index 100%
rename from examples/DDCMS/data/tid.xml
rename to examples/DDCMSTests/data/tid.xml
diff --git a/examples/DDCMS/data/tidb.xml b/examples/DDCMSTests/data/tidb.xml
similarity index 100%
rename from examples/DDCMS/data/tidb.xml
rename to examples/DDCMSTests/data/tidb.xml
diff --git a/examples/DDCMS/data/tidf.xml b/examples/DDCMSTests/data/tidf.xml
similarity index 100%
rename from examples/DDCMS/data/tidf.xml
rename to examples/DDCMSTests/data/tidf.xml
diff --git a/examples/DDCMS/data/tidmaterial.xml b/examples/DDCMSTests/data/tidmaterial.xml
similarity index 100%
rename from examples/DDCMS/data/tidmaterial.xml
rename to examples/DDCMSTests/data/tidmaterial.xml
diff --git a/examples/DDCMS/data/tidmodpar.xml b/examples/DDCMSTests/data/tidmodpar.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodpar.xml
rename to examples/DDCMSTests/data/tidmodpar.xml
diff --git a/examples/DDCMS/data/tidmodule0.xml b/examples/DDCMSTests/data/tidmodule0.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule0.xml
rename to examples/DDCMSTests/data/tidmodule0.xml
diff --git a/examples/DDCMS/data/tidmodule0l.xml b/examples/DDCMSTests/data/tidmodule0l.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule0l.xml
rename to examples/DDCMSTests/data/tidmodule0l.xml
diff --git a/examples/DDCMS/data/tidmodule0r.xml b/examples/DDCMSTests/data/tidmodule0r.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule0r.xml
rename to examples/DDCMSTests/data/tidmodule0r.xml
diff --git a/examples/DDCMS/data/tidmodule1.xml b/examples/DDCMSTests/data/tidmodule1.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule1.xml
rename to examples/DDCMSTests/data/tidmodule1.xml
diff --git a/examples/DDCMS/data/tidmodule1l.xml b/examples/DDCMSTests/data/tidmodule1l.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule1l.xml
rename to examples/DDCMSTests/data/tidmodule1l.xml
diff --git a/examples/DDCMS/data/tidmodule1r.xml b/examples/DDCMSTests/data/tidmodule1r.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule1r.xml
rename to examples/DDCMSTests/data/tidmodule1r.xml
diff --git a/examples/DDCMS/data/tidmodule2.xml b/examples/DDCMSTests/data/tidmodule2.xml
similarity index 100%
rename from examples/DDCMS/data/tidmodule2.xml
rename to examples/DDCMSTests/data/tidmodule2.xml
diff --git a/examples/DDCMS/data/tidring0.xml b/examples/DDCMSTests/data/tidring0.xml
similarity index 100%
rename from examples/DDCMS/data/tidring0.xml
rename to examples/DDCMSTests/data/tidring0.xml
diff --git a/examples/DDCMS/data/tidring0b.xml b/examples/DDCMSTests/data/tidring0b.xml
similarity index 100%
rename from examples/DDCMS/data/tidring0b.xml
rename to examples/DDCMSTests/data/tidring0b.xml
diff --git a/examples/DDCMS/data/tidring0f.xml b/examples/DDCMSTests/data/tidring0f.xml
similarity index 100%
rename from examples/DDCMS/data/tidring0f.xml
rename to examples/DDCMSTests/data/tidring0f.xml
diff --git a/examples/DDCMS/data/tidring1.xml b/examples/DDCMSTests/data/tidring1.xml
similarity index 100%
rename from examples/DDCMS/data/tidring1.xml
rename to examples/DDCMSTests/data/tidring1.xml
diff --git a/examples/DDCMS/data/tidring1b.xml b/examples/DDCMSTests/data/tidring1b.xml
similarity index 100%
rename from examples/DDCMS/data/tidring1b.xml
rename to examples/DDCMSTests/data/tidring1b.xml
diff --git a/examples/DDCMS/data/tidring1f.xml b/examples/DDCMSTests/data/tidring1f.xml
similarity index 100%
rename from examples/DDCMS/data/tidring1f.xml
rename to examples/DDCMSTests/data/tidring1f.xml
diff --git a/examples/DDCMS/data/tidring2.xml b/examples/DDCMSTests/data/tidring2.xml
similarity index 100%
rename from examples/DDCMS/data/tidring2.xml
rename to examples/DDCMSTests/data/tidring2.xml
diff --git a/examples/DDCMS/data/tidringpar.xml b/examples/DDCMSTests/data/tidringpar.xml
similarity index 100%
rename from examples/DDCMS/data/tidringpar.xml
rename to examples/DDCMSTests/data/tidringpar.xml
diff --git a/examples/DDCMS/data/tob.xml b/examples/DDCMSTests/data/tob.xml
similarity index 100%
rename from examples/DDCMS/data/tob.xml
rename to examples/DDCMSTests/data/tob.xml
diff --git a/examples/DDCMS/data/tobmaterial.xml b/examples/DDCMSTests/data/tobmaterial.xml
similarity index 100%
rename from examples/DDCMS/data/tobmaterial.xml
rename to examples/DDCMSTests/data/tobmaterial.xml
diff --git a/examples/DDCMS/data/tobmodpar.xml b/examples/DDCMSTests/data/tobmodpar.xml
similarity index 100%
rename from examples/DDCMS/data/tobmodpar.xml
rename to examples/DDCMSTests/data/tobmodpar.xml
diff --git a/examples/DDCMS/data/tobmodule0.xml b/examples/DDCMSTests/data/tobmodule0.xml
similarity index 100%
rename from examples/DDCMS/data/tobmodule0.xml
rename to examples/DDCMSTests/data/tobmodule0.xml
diff --git a/examples/DDCMS/data/tobmodule2.xml b/examples/DDCMSTests/data/tobmodule2.xml
similarity index 100%
rename from examples/DDCMS/data/tobmodule2.xml
rename to examples/DDCMSTests/data/tobmodule2.xml
diff --git a/examples/DDCMS/data/tobmodule4.xml b/examples/DDCMSTests/data/tobmodule4.xml
similarity index 100%
rename from examples/DDCMS/data/tobmodule4.xml
rename to examples/DDCMSTests/data/tobmodule4.xml
diff --git a/examples/DDCMS/data/tobrod0.xml b/examples/DDCMSTests/data/tobrod0.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod0.xml
rename to examples/DDCMSTests/data/tobrod0.xml
diff --git a/examples/DDCMS/data/tobrod0c.xml b/examples/DDCMSTests/data/tobrod0c.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod0c.xml
rename to examples/DDCMSTests/data/tobrod0c.xml
diff --git a/examples/DDCMS/data/tobrod0h.xml b/examples/DDCMSTests/data/tobrod0h.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod0h.xml
rename to examples/DDCMSTests/data/tobrod0h.xml
diff --git a/examples/DDCMS/data/tobrod0l.xml b/examples/DDCMSTests/data/tobrod0l.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod0l.xml
rename to examples/DDCMSTests/data/tobrod0l.xml
diff --git a/examples/DDCMS/data/tobrod1.xml b/examples/DDCMSTests/data/tobrod1.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod1.xml
rename to examples/DDCMSTests/data/tobrod1.xml
diff --git a/examples/DDCMS/data/tobrod1h.xml b/examples/DDCMSTests/data/tobrod1h.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod1h.xml
rename to examples/DDCMSTests/data/tobrod1h.xml
diff --git a/examples/DDCMS/data/tobrod1l.xml b/examples/DDCMSTests/data/tobrod1l.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod1l.xml
rename to examples/DDCMSTests/data/tobrod1l.xml
diff --git a/examples/DDCMS/data/tobrod2.xml b/examples/DDCMSTests/data/tobrod2.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod2.xml
rename to examples/DDCMSTests/data/tobrod2.xml
diff --git a/examples/DDCMS/data/tobrod2c.xml b/examples/DDCMSTests/data/tobrod2c.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod2c.xml
rename to examples/DDCMSTests/data/tobrod2c.xml
diff --git a/examples/DDCMS/data/tobrod2h.xml b/examples/DDCMSTests/data/tobrod2h.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod2h.xml
rename to examples/DDCMSTests/data/tobrod2h.xml
diff --git a/examples/DDCMS/data/tobrod2l.xml b/examples/DDCMSTests/data/tobrod2l.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod2l.xml
rename to examples/DDCMSTests/data/tobrod2l.xml
diff --git a/examples/DDCMS/data/tobrod3.xml b/examples/DDCMSTests/data/tobrod3.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod3.xml
rename to examples/DDCMSTests/data/tobrod3.xml
diff --git a/examples/DDCMS/data/tobrod3h.xml b/examples/DDCMSTests/data/tobrod3h.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod3h.xml
rename to examples/DDCMSTests/data/tobrod3h.xml
diff --git a/examples/DDCMS/data/tobrod3l.xml b/examples/DDCMSTests/data/tobrod3l.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod3l.xml
rename to examples/DDCMSTests/data/tobrod3l.xml
diff --git a/examples/DDCMS/data/tobrod4.xml b/examples/DDCMSTests/data/tobrod4.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod4.xml
rename to examples/DDCMSTests/data/tobrod4.xml
diff --git a/examples/DDCMS/data/tobrod4c.xml b/examples/DDCMSTests/data/tobrod4c.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod4c.xml
rename to examples/DDCMSTests/data/tobrod4c.xml
diff --git a/examples/DDCMS/data/tobrod4h.xml b/examples/DDCMSTests/data/tobrod4h.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod4h.xml
rename to examples/DDCMSTests/data/tobrod4h.xml
diff --git a/examples/DDCMS/data/tobrod4l.xml b/examples/DDCMSTests/data/tobrod4l.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod4l.xml
rename to examples/DDCMSTests/data/tobrod4l.xml
diff --git a/examples/DDCMS/data/tobrod5.xml b/examples/DDCMSTests/data/tobrod5.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod5.xml
rename to examples/DDCMSTests/data/tobrod5.xml
diff --git a/examples/DDCMS/data/tobrod5h.xml b/examples/DDCMSTests/data/tobrod5h.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod5h.xml
rename to examples/DDCMSTests/data/tobrod5h.xml
diff --git a/examples/DDCMS/data/tobrod5l.xml b/examples/DDCMSTests/data/tobrod5l.xml
similarity index 100%
rename from examples/DDCMS/data/tobrod5l.xml
rename to examples/DDCMSTests/data/tobrod5l.xml
diff --git a/examples/DDCMS/data/tobrodpar.xml b/examples/DDCMSTests/data/tobrodpar.xml
similarity index 100%
rename from examples/DDCMS/data/tobrodpar.xml
rename to examples/DDCMSTests/data/tobrodpar.xml
diff --git a/examples/DDCMS/data/tracker.xml b/examples/DDCMSTests/data/tracker.xml
similarity index 100%
rename from examples/DDCMS/data/tracker.xml
rename to examples/DDCMSTests/data/tracker.xml
diff --git a/examples/DDCMS/data/trackerParameters.xml b/examples/DDCMSTests/data/trackerParameters.xml
similarity index 100%
rename from examples/DDCMS/data/trackerParameters.xml
rename to examples/DDCMSTests/data/trackerParameters.xml
diff --git a/examples/DDCMS/data/trackerStructureTopology.xml b/examples/DDCMSTests/data/trackerStructureTopology.xml
similarity index 100%
rename from examples/DDCMS/data/trackerStructureTopology.xml
rename to examples/DDCMSTests/data/trackerStructureTopology.xml
diff --git a/examples/DDCMS/data/trackerbulkhead.xml b/examples/DDCMSTests/data/trackerbulkhead.xml
similarity index 100%
rename from examples/DDCMS/data/trackerbulkhead.xml
rename to examples/DDCMSTests/data/trackerbulkhead.xml
diff --git a/examples/DDCMS/data/trackermaterial.xml b/examples/DDCMSTests/data/trackermaterial.xml
similarity index 100%
rename from examples/DDCMS/data/trackermaterial.xml
rename to examples/DDCMSTests/data/trackermaterial.xml
diff --git a/examples/DDCMS/data/trackerother.xml b/examples/DDCMSTests/data/trackerother.xml
similarity index 100%
rename from examples/DDCMS/data/trackerother.xml
rename to examples/DDCMSTests/data/trackerother.xml
diff --git a/examples/DDCMS/data/trackerpixbar.xml b/examples/DDCMSTests/data/trackerpixbar.xml
similarity index 100%
rename from examples/DDCMS/data/trackerpixbar.xml
rename to examples/DDCMSTests/data/trackerpixbar.xml
diff --git a/examples/DDCMS/data/trackerpixfwd.xml b/examples/DDCMSTests/data/trackerpixfwd.xml
similarity index 100%
rename from examples/DDCMS/data/trackerpixfwd.xml
rename to examples/DDCMSTests/data/trackerpixfwd.xml
diff --git a/examples/DDCMS/data/trackertec.xml b/examples/DDCMSTests/data/trackertec.xml
similarity index 100%
rename from examples/DDCMS/data/trackertec.xml
rename to examples/DDCMSTests/data/trackertec.xml
diff --git a/examples/DDCMS/data/trackertib.xml b/examples/DDCMSTests/data/trackertib.xml
similarity index 100%
rename from examples/DDCMS/data/trackertib.xml
rename to examples/DDCMSTests/data/trackertib.xml
diff --git a/examples/DDCMS/data/trackertibtidservices.xml b/examples/DDCMSTests/data/trackertibtidservices.xml
similarity index 100%
rename from examples/DDCMS/data/trackertibtidservices.xml
rename to examples/DDCMSTests/data/trackertibtidservices.xml
diff --git a/examples/DDCMS/data/trackertid.xml b/examples/DDCMSTests/data/trackertid.xml
similarity index 100%
rename from examples/DDCMS/data/trackertid.xml
rename to examples/DDCMSTests/data/trackertid.xml
diff --git a/examples/DDCMS/data/trackertob.xml b/examples/DDCMSTests/data/trackertob.xml
similarity index 100%
rename from examples/DDCMS/data/trackertob.xml
rename to examples/DDCMSTests/data/trackertob.xml
diff --git a/examples/DDCMS/data/vacuum.xml b/examples/DDCMSTests/data/vacuum.xml
similarity index 100%
rename from examples/DDCMS/data/vacuum.xml
rename to examples/DDCMSTests/data/vacuum.xml
diff --git a/examples/DDCMS/eve/DDEve.xml b/examples/DDCMSTests/eve/DDEve.xml
similarity index 100%
rename from examples/DDCMS/eve/DDEve.xml
rename to examples/DDCMSTests/eve/DDEve.xml
diff --git a/examples/DDCMSTests/include/DDCMS/DDCMS.h b/examples/DDCMSTests/include/DDCMS/DDCMS.h
new file mode 100644
index 0000000000000000000000000000000000000000..7159a1843716f2b8c4520561ae454421297a62b5
--- /dev/null
+++ b/examples/DDCMSTests/include/DDCMS/DDCMS.h
@@ -0,0 +1,239 @@
+//==========================================================================
+//  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
+//
+//==========================================================================
+//
+// DDCMS is a detector description convention developed by the CMS experiment.
+//
+//==========================================================================
+#ifndef DD4HEP_DDCMS_DDCMS_H
+#define DD4HEP_DDCMS_DDCMS_H
+
+// Framework includes
+#include "XML/XML.h"
+#include "DD4hep/DetElement.h"
+#include "DDCMS/DDCMSTags.h"
+
+// C/C++ include files
+#include <map>
+#include <sstream>
+
+/// Namespace for the AIDA detector description toolkit
+namespace dd4hep {
+
+  /// Namespace of DDCMS conversion namespace
+  namespace cms  {
+
+    // Forward declaration
+    class ParsingContext;
+
+    /// XML namespace for the evaluator
+    /*
+     *
+     * \author  M.Frank
+     * \version 1.0
+     * \ingroup DD4HEP_CORE
+     */
+    class Namespace  {
+    public:
+      /// Reference to the global parsing context
+      ParsingContext* context = 0;
+      std::string     name;
+      bool            pop = false;
+    public:
+      /// NO Default constructor
+      Namespace() = delete;
+      /// Initializing constructor
+      Namespace(ParsingContext* ctx, xml_h element);
+      Namespace(ParsingContext& ctx, xml_h element, bool);
+      /// Initializing constructor
+      Namespace(ParsingContext* ctx);
+      /// Initializing constructor
+      Namespace(ParsingContext& ctx);
+      /// NO Copy constructor
+      Namespace(const Namespace& copy) = delete;
+      /// Standard destructor (Non virtual!)
+      ~Namespace();
+      /// NO assignment
+      Namespace& operator=(const Namespace& copy) = delete;
+      /// Prepend name with namespace
+      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
+      Solid    addSolid(const std::string& name,Solid solid)  const;
+      /// Add solid to current namespace as fully indicated by the name
+      Solid    addSolidNS(const std::string& name,Solid solid)  const;
+
+      Volume   volume(const std::string& name, bool exc=true)  const;
+      /// Add volume to current namespace
+      Volume   addVolume(Volume vol)  const;
+      /// Add volume to current namespace as fully indicated by the name
+      Volume   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
+    /*
+     *
+     * \author  M.Frank
+     * \version 1.0
+     * \ingroup DD4HEP_CORE
+     */
+    class ParsingContext  {
+    public:
+      Detector*                          description;
+      std::map<std::string, Rotation3D>  rotations;
+      std::map<std::string, Solid>       shapes;
+      std::map<std::string, Volume>      volumes;
+      std::set<std::string>              disabledAlgs;
+      std::vector<std::string>           namespaces;
+      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(Detector* det) : description(det) { namespaces.push_back(""); }
+      ~ParsingContext() = default;
+      const std::string& ns() const  {  return namespaces.back(); }
+    };
+
+    /// Encapsulation of the CMS detector description algorithm arguments
+    /*
+     *
+     * \author  M.Frank
+     * \version 1.0
+     * \ingroup DD4HEP_CORE
+     */
+    class AlgoArguments   {
+    protected:
+      /// Access raw argument as a string by name
+      xml_h       raw_arg(const std::string& name)  const;
+      /// Access namespace resolved argument as a string by name
+      std::string resolved_scalar_arg(const std::string& name)  const;
+
+    public:
+      std::string          name;
+      ParsingContext&      context;
+      xml_h                element;
+      
+      /// Initializing constructor
+      AlgoArguments(ParsingContext& ctxt, xml_h algorithm);
+      /// Default constructor
+      AlgoArguments() = delete;
+      /// Copy constructor
+      AlgoArguments(const AlgoArguments& copy) = delete;
+      /// Assignment operator
+      AlgoArguments& operator=(const AlgoArguments& copy) = delete;
+      /// Standatd destructor
+      ~AlgoArguments() = default;
+
+      /// 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
+      template<typename T> T value(const std::string& name)  const;
+      /// Shortcut to access string arguments
+      std::string str(const std::string& nam)  const;
+      /// Shortcut to access double arguments
+      double dble(const std::string& nam)  const;
+      /// Shortcut to access integer arguments
+      int integer(const std::string& nam)  const;
+      /// Shortcut to access vector<double> arguments
+      std::vector<double> vecDble(const std::string& nam)  const;
+      /// Shortcut to access vector<int> arguments
+      std::vector<int> vecInt(const std::string& nam)  const;
+      /// Shortcut to access vector<int> arguments
+      std::vector<std::string> vecStr(const std::string& nam)  const;
+    };
+
+    /// Re-direct debug messages to the DD4hep printer
+    /*
+     *
+     * \author  M.Frank
+     * \version 1.0
+     * \ingroup DD4HEP_CORE
+     */
+    class LogDebug : public std::stringstream  {
+    protected:
+      std::string tag;
+      int  level;
+      bool pop = false;
+    public:
+      LogDebug() = delete;
+      LogDebug(const LogDebug& copy) = delete;
+      LogDebug& operator=(const LogDebug& copy) = delete;
+      LogDebug(const std::string& tag_value, bool /* set_context */);
+      LogDebug(const std::string& tag_value);
+      ~LogDebug();
+      static void setDebugAlgorithms(bool value);
+    };
+
+    /// Re-direct warning messages to the DD4hep printer
+    /*
+     *
+     * \author  M.Frank
+     * \version 1.0
+     * \ingroup DD4HEP_CORE
+     */
+    class LogWarn : public LogDebug  {
+    public:
+      LogWarn() = delete;
+      LogWarn(const LogWarn& copy) = delete;
+      LogWarn& operator=(const LogWarn& copy) = delete;
+      LogWarn(const std::string& tag_value);
+    };
+
+
+    /// Helper: Convert the name of a placed volume into a subdetector name
+    std::string detElementName(PlacedVolume pv);
+    /// Create 3D rotation matrix from angles.
+    Rotation3D make_rotation3D(double thetaX, double phiX,
+                               double thetaY, double phiY,
+                               double thetaZ, double phiZ);
+
+  }   /* End namespace cms      */
+}     /* End namespace dd4hep   */
+
+#endif /* DD4HEP_DDCMS_DDCMS_H  */
diff --git a/examples/DDCMSTests/include/DDCMS/DDCMSPlugins.h b/examples/DDCMSTests/include/DDCMS/DDCMSPlugins.h
new file mode 100644
index 0000000000000000000000000000000000000000..63fd22c82f38cdfa8384cc2ab088f92f07196bd7
--- /dev/null
+++ b/examples/DDCMSTests/include/DDCMS/DDCMSPlugins.h
@@ -0,0 +1,68 @@
+//==========================================================================
+//  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
+//
+//==========================================================================
+//
+// DDCMS is a detector description convention developed by the CMS experiment.
+//
+//==========================================================================
+#ifndef DD4HEP_DDCMS_DDCMSPLUGINS_H
+#define DD4HEP_DDCMS_DDCMSPLUGINS_H
+
+// Framework includes
+#include "DDCMS/DDCMS.h"
+#include "DD4hep/Plugins.h"
+#include "CLHEP/Units/SystemOfUnits.h"
+
+/// Namespace for the AIDA detector description toolkit
+namespace dd4hep {
+
+  // Forward declarations
+  class SensitiveDetector;
+  
+  /// Standard factory to create Detector elements from an XML representation.
+  /**
+   *  \author  M.Frank
+   *  \version 1.0
+   *  \date    2012/07/31
+   *  \ingroup DD4HEP_CMS
+   */
+  template <typename T> class DDCMSDetElementFactory : public PluginFactoryBase {
+  public:
+    static long create(Detector&            dsc,
+                       cms::ParsingContext& ctx,
+                       xml::Handle_t        elt,
+                       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(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) {                 \
+    typedef DDCMSDetElementFactory< ddcms_det_element_##name > _IMP;    \
+    template <> long                                                    \
+      _IMP::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,             \
+                             long(dd4hep::Detector*,dd4hep::cms::ParsingContext*, \
+                                  ns::xml_h*,dd4hep::SensitiveDetector*),__LINE__)  }
+
+#endif /* DD4HEP_DDCMS_DDCMSPLUGINS_H  */
diff --git a/examples/DDCMSTests/include/DDCMS/DDCMSTags.h b/examples/DDCMSTests/include/DDCMS/DDCMSTags.h
new file mode 100644
index 0000000000000000000000000000000000000000..f7415c2bdad9a5ae2c20079f41d3544a05e5acad
--- /dev/null
+++ b/examples/DDCMSTests/include/DDCMS/DDCMSTags.h
@@ -0,0 +1,148 @@
+//==========================================================================
+//  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
+//
+//==========================================================================
+//
+// DDCMS is a detector description convention developed by the CMS experiment.
+//
+//==========================================================================
+
+// Framework includes
+#ifndef DD4HEP_DDCMS_DDCMSTAGS_H
+#define DD4HEP_DDCMS_DDCMSTAGS_H
+
+// Framework include files
+#include "XML/XMLElements.h"
+#ifndef UNICODE 
+#define UNICODE(x)  extern const ::dd4hep::xml::Tag_t Unicode_##x 
+#endif
+
+/// Namespace for the AIDA detector description toolkit
+namespace dd4hep {
+
+  /// Namespace of DDCMS conversion namespace
+  namespace DDCMS  {
+    UNICODE(DDCMS);
+
+    UNICODE(DDDefinition);
+
+    UNICODE(ConstantsSection);
+    UNICODE(Constant);
+    
+    UNICODE(MaterialSection);
+    UNICODE(ElementaryMaterial);
+    UNICODE(CompositeMaterial);
+    UNICODE(atomicWeight);
+    UNICODE(density);
+    UNICODE(symbol);
+    UNICODE(atomicNumber);
+    UNICODE(MaterialFraction);
+
+
+    UNICODE(RotationSection);
+    UNICODE(Rotation);
+    UNICODE(rRotation);
+    UNICODE(thetaX);
+    UNICODE(phiX);
+    UNICODE(thetaY);
+    UNICODE(phiY);
+    UNICODE(thetaZ);
+    UNICODE(phiZ);
+
+    UNICODE(TransformationSection);
+    UNICODE(Transformation);
+
+    UNICODE(SolidSection);
+
+    UNICODE(Box);
+    UNICODE(dx);
+    UNICODE(dy);
+    UNICODE(dz);
+
+    UNICODE(Tubs);
+    UNICODE(rMin);
+    UNICODE(rMax);
+    UNICODE(startPhi);
+    UNICODE(deltaPhi);
+    
+    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);
+    UNICODE(rMaterial);
+    
+    UNICODE(PosPartSection);
+    UNICODE(PosPart);
+    UNICODE(copyNumber);
+    UNICODE(rParent);
+    UNICODE(ChildName);
+    UNICODE(rChild);
+    UNICODE(Translation);
+
+    UNICODE(Algorithm);
+    UNICODE(String);
+    UNICODE(Numeric);
+    UNICODE(Vector);
+    UNICODE(nEntries);
+
+    UNICODE(VisSection);
+    UNICODE(vismaterial);
+    UNICODE(vis);
+
+    
+    /// Debug flags
+    UNICODE(debug_constants);
+    UNICODE(debug_materials);
+    UNICODE(debug_shapes);
+    UNICODE(debug_volumes);
+    UNICODE(debug_placements);
+    UNICODE(debug_namespaces);
+    UNICODE(debug_rotations);
+    UNICODE(debug_visattr);
+    UNICODE(debug_includes);
+    UNICODE(debug_algorithms);
+
+    /// DD4hep specific
+    UNICODE(open_geometry);
+    UNICODE(close_geometry);
+    UNICODE(IncludeSection);
+    UNICODE(Include);
+    UNICODE(DisabledAlgo);
+    
+  }   /* End namespace DDCMS       */
+}     /* End namespace dd4hep     */
+
+#undef UNICODE // Do not miss this one!
+#include "XML/XMLTags.h"
+
+#define _CMU(a) ::dd4hep::DDCMS::Unicode_##a
+
+#endif /* DD4HEP_DDCMS_DDCMSTAGS_H  */
diff --git a/examples/DDCMSTests/pictures/CMS-pixbar.png b/examples/DDCMSTests/pictures/CMS-pixbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e55ffe9c20f6133294dece1453bb294ce062988
Binary files /dev/null and b/examples/DDCMSTests/pictures/CMS-pixbar.png differ
diff --git a/examples/DDCMSTests/pictures/CMS-tracker-sim-1.png b/examples/DDCMSTests/pictures/CMS-tracker-sim-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f8f83e3ccd0f5ecc630601a0ce09996754eb7e2
Binary files /dev/null and b/examples/DDCMSTests/pictures/CMS-tracker-sim-1.png differ
diff --git a/examples/DDCMSTests/pictures/CMS-tracker-sim-2.png b/examples/DDCMSTests/pictures/CMS-tracker-sim-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba4d40d10bfdc13d4c53e028ac5351507e006083
Binary files /dev/null and b/examples/DDCMSTests/pictures/CMS-tracker-sim-2.png differ
diff --git a/examples/DDCMSTests/pictures/CMS-tracker1.png b/examples/DDCMSTests/pictures/CMS-tracker1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3c3f2b10184d4649c910adbc1cd7f8d17ba8c2d
Binary files /dev/null and b/examples/DDCMSTests/pictures/CMS-tracker1.png differ
diff --git a/examples/DDCMSTests/pictures/CMS-tracker2.png b/examples/DDCMSTests/pictures/CMS-tracker2.png
new file mode 100644
index 0000000000000000000000000000000000000000..55f737849000c897e2a9d37c104a5db9eb4b1758
Binary files /dev/null and b/examples/DDCMSTests/pictures/CMS-tracker2.png differ
diff --git a/examples/DDCMSTests/pictures/CMS-tracker3.png b/examples/DDCMSTests/pictures/CMS-tracker3.png
new file mode 100644
index 0000000000000000000000000000000000000000..9be0bcfa767449edebbc0e85073d32eaeab361b4
Binary files /dev/null and b/examples/DDCMSTests/pictures/CMS-tracker3.png differ
diff --git a/examples/DDCMS/scripts/CMSTrackerSim.py b/examples/DDCMSTests/scripts/CMSTrackerSim.py
similarity index 100%
rename from examples/DDCMS/scripts/CMSTrackerSim.py
rename to examples/DDCMSTests/scripts/CMSTrackerSim.py
diff --git a/examples/DDCMS/src/Example.cpp b/examples/DDCMSTests/src/Example.cpp
similarity index 100%
rename from examples/DDCMS/src/Example.cpp
rename to examples/DDCMSTests/src/Example.cpp