From 22300ed7fdc35f6394a934be59e1f837c0407750 Mon Sep 17 00:00:00 2001
From: Markus Frank <markus.frank@cern.ch>
Date: Wed, 2 Dec 2015 21:51:58 +0000
Subject: [PATCH] Fix ROOT5 compatibility

---
 DDCore/include/DD4hep/Dictionary.h  | 131 +++++++++---------
 DDG4/include/DDG4/DDG4Dict.h        |  14 +-
 DDG4/python/DDG4Dict.C              | 206 ++++++++++++++--------------
 examples/ClientTests/CMakeLists.txt |   7 +-
 4 files changed, 184 insertions(+), 174 deletions(-)

diff --git a/DDCore/include/DD4hep/Dictionary.h b/DDCore/include/DD4hep/Dictionary.h
index e478f9308..547670943 100644
--- a/DDCore/include/DD4hep/Dictionary.h
+++ b/DDCore/include/DD4hep/Dictionary.h
@@ -46,7 +46,6 @@ namespace DD4hep {
   XmlTools::Evaluator& g4Evaluator();
 }
 
-
 // -------------------------------------------------------------------------
 // Regular DD4hep dictionaries
 // -------------------------------------------------------------------------
@@ -55,6 +54,8 @@ namespace DD4hep {
 #pragma link off all classes;
 #pragma link off all functions;
 
+using namespace std;
+
 #pragma link C++ namespace XmlTools;
 #pragma link C++ class XmlTools::Evaluator;
 #pragma link C++ function DD4hep::evaluator;
@@ -65,25 +66,25 @@ namespace DD4hep {
 #pragma link C++ namespace DD4hep::DDSegmentation;
 
 #ifndef __ROOTCLING__
-template std::pair<unsigned int, std::string>;
+template pair<unsigned int, string>;
 template class DD4hep::Geometry::Handle<DD4hep::NamedObject>;
-template class std::pair< std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >;
-template class std::map< std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >;
+template class pair< string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >;
+template class map< string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >;
 #endif
 
-#pragma link C++ class std::pair<unsigned int,std::string>+;
+#pragma link C++ class pair<unsigned int,string>+;
 #pragma link C++ class DD4hep::NamedObject+;
 #pragma link C++ class DD4hep::Geometry::Ref_t+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::NamedObject>+;
-#pragma link C++ class std::pair<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >+;
-#pragma link C++ class std::map<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >+;
-#pragma link C++ class std::map<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator;
-#pragma link C++ class std::map<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::const_iterator;
+#pragma link C++ class pair<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >+;
+#pragma link C++ class map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >+;
+#pragma link C++ class map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator;
+#pragma link C++ class map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::const_iterator;
 
 #ifdef R__MACOSX
 // We only need these declarations for the clang compiler
-#pragma link C++ function operator==( const std::map<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator&,const std::map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator& ); 
-#pragma link C++ function operator!=( const std::map<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator&,const std::map<std::string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator& ); 
+#pragma link C++ function operator==( const map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator&,const map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator& ); 
+#pragma link C++ function operator!=( const map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator&,const map<string, DD4hep::Geometry::Handle<DD4hep::NamedObject> >::iterator& ); 
 #endif
 
 #pragma link C++ class DD4hep::ObjectExtensions+;
@@ -92,17 +93,17 @@ template class DD4hep::Geometry::Handle<TNamed>;
 
 #pragma link C++ class DD4hep::Geometry::LCDD+;
 #pragma link C++ class DD4hep::Geometry::LCDDData+;
-#pragma link C++ class DD4hep::Geometry::LCDDData::ObjectHandleStd::Map+;
+#pragma link C++ class DD4hep::Geometry::LCDDData::ObjectHandleMap+;
 #pragma link C++ class DD4hep::Geometry::LCDD::PropertyValues+;
 #pragma link C++ class DD4hep::Geometry::LCDD::Properties+;
 #pragma link C++ class DD4hepRootPersistency+;
 
 // These below are the Namedobject instances to be generated ....
-//#pragma link C++ class DD4hep::Geometry::LCDD::HandleStd::Map+;
-//#pragma link C++ class DD4hep::Geometry::LCDD::HandleStd::Map::iterator;
-//#pragma link C++ class DD4hep::Geometry::LCDD::HandleStd::Map::const_iterator;
-//#pragma link C++ class DD4hep::Geometry::LCDD::HandleStd::Map::key_type; // == std::string
-//#pragma link C++ class DD4hep::Geometry::LCDD::HandleStd::Map::value_type+;
+//#pragma link C++ class DD4hep::Geometry::LCDD::HandleMap+;
+//#pragma link C++ class DD4hep::Geometry::LCDD::HandleMap::iterator;
+//#pragma link C++ class DD4hep::Geometry::LCDD::HandleMap::const_iterator;
+//#pragma link C++ class DD4hep::Geometry::LCDD::HandleMap::key_type; // == string
+//#pragma link C++ class DD4hep::Geometry::LCDD::HandleMap::value_type+;
 
 #pragma link C++ class DD4hep::Geometry::VolumeManager+;
 #pragma link C++ class DD4hep::Geometry::VolumeManagerObject+;
@@ -130,7 +131,7 @@ template class DD4hep::Geometry::Handle<TNamed>;
 
 // Objects.h
 #pragma link C++ class DD4hep::Geometry::Author+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Author>+;
+#pragma link C++ class vector<DD4hep::Geometry::Author>+;
 
 #pragma link C++ class DD4hep::Geometry::Header+;
 #pragma link C++ class DD4hep::Geometry::HeaderObject+;
@@ -139,50 +140,50 @@ template class DD4hep::Geometry::Handle<TNamed>;
 #pragma link C++ class DD4hep::Geometry::Constant+;
 #pragma link C++ class DD4hep::Geometry::ConstantObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::ConstantObject>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Constant>+;
+#pragma link C++ class vector<DD4hep::Geometry::Constant>+;
 
 #pragma link C++ class DD4hep::Geometry::Atom+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Atom>+;
+#pragma link C++ class vector<DD4hep::Geometry::Atom>+;
 #pragma link C++ class DD4hep::Geometry::Handle<TGeoElement>+;
 
 #pragma link C++ class DD4hep::Geometry::Material+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Material>+;
+#pragma link C++ class vector<DD4hep::Geometry::Material>+;
 #pragma link C++ class DD4hep::Geometry::Handle<TGeoMedium>+;
 
 #pragma link C++ class DD4hep::Geometry::VisAttr+;
-#pragma link C++ class std::vector<DD4hep::Geometry::VisAttr>+;
+#pragma link C++ class vector<DD4hep::Geometry::VisAttr>+;
 #pragma link C++ class DD4hep::Geometry::VisAttrObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::VisAttrObject>+;
 
 #pragma link C++ class DD4hep::Geometry::AlignmentEntry+;
 #pragma link C++ class DD4hep::Geometry::Limit+;
-#pragma link C++ class std::set<DD4hep::Geometry::Limit>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Limit>+;
+#pragma link C++ class set<DD4hep::Geometry::Limit>+;
+#pragma link C++ class vector<DD4hep::Geometry::Limit>+;
 #pragma link C++ class DD4hep::Geometry::LimitSet+;
-#pragma link C++ class std::vector<DD4hep::Geometry::LimitSet>+;
+#pragma link C++ class vector<DD4hep::Geometry::LimitSet>+;
 #pragma link C++ class DD4hep::Geometry::LimitSetObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::LimitSetObject>+;
 #pragma link C++ class DD4hep::Geometry::Region+;
 #pragma link C++ class DD4hep::Geometry::RegionObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::RegionObject>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Region>+;
+#pragma link C++ class vector<DD4hep::Geometry::Region>+;
 
 // Readout.h
-#pragma link C++ class std::vector<std::pair<size_t,std::string> >+;
+#pragma link C++ class vector<pair<size_t,string> >+;
 #pragma link C++ class DD4hep::Geometry::Segmentation+;
 #pragma link C++ class DD4hep::Geometry::SegmentationObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::SegmentationObject>+;
 #pragma link C++ class DD4hep::Geometry::Readout+;
 #pragma link C++ class DD4hep::Geometry::ReadoutObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::ReadoutObject>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Readout>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::IDDescriptor>+;
+#pragma link C++ class vector<DD4hep::Geometry::Readout>+;
+#pragma link C++ class vector<DD4hep::Geometry::IDDescriptor>+;
 
 #pragma link C++ class DD4hep::Geometry::Alignment+;
 #pragma link C++ class DD4hep::Geometry::Handle<TGeoPhysicalNode>+;
 
 #pragma link C++ class DD4hep::Geometry::Condition+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Condition>+;
+#pragma link C++ class vector<DD4hep::Geometry::Condition>+;
 #pragma link C++ class DD4hep::Geometry::ConditionsInterna::ConditionObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::ConditionsInterna::ConditionObject>+;
 
@@ -194,42 +195,42 @@ template class DD4hep::Geometry::Handle<TNamed>;
 #pragma link C++ class DD4hep::Geometry::DetElement+;
 #pragma link C++ class DD4hep::Geometry::DetElementObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::DetElementObject>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::DetElement>+;
-#pragma link C++ class std::pair<std::string,DD4hep::Geometry::DetElement>+;
-#pragma link C++ class std::map<std::string,DD4hep::Geometry::DetElement>+;
-#pragma link C++ class std::map<std::string,DD4hep::Geometry::DetElement>::iterator;
-#pragma link C++ class std::map<std::string,DD4hep::Geometry::DetElement>::const_iterator;
+#pragma link C++ class vector<DD4hep::Geometry::DetElement>+;
+#pragma link C++ class pair<string,DD4hep::Geometry::DetElement>+;
+#pragma link C++ class map<string,DD4hep::Geometry::DetElement>+;
+#pragma link C++ class map<string,DD4hep::Geometry::DetElement>::iterator;
+#pragma link C++ class map<string,DD4hep::Geometry::DetElement>::const_iterator;
 
 #ifdef R__MACOSX
 // We only need these declarations for the clang compiler
-#pragma link C++ function operator==( const std::map<std::string, DD4hep::Geometry::DetElement >::iterator&,const std::map<std::string, DD4hep::Geometry::DetElement >::iterator& ); 
-#pragma link C++ function operator!=( const std::map<std::string, DD4hep::Geometry::DetElement >::iterator&,const std::map<std::string, DD4hep::Geometry::DetElement >::iterator& ); 
+#pragma link C++ function operator==( const map<string, DD4hep::Geometry::DetElement >::iterator&,const map<string, DD4hep::Geometry::DetElement >::iterator& ); 
+#pragma link C++ function operator!=( const map<string, DD4hep::Geometry::DetElement >::iterator&,const map<string, DD4hep::Geometry::DetElement >::iterator& ); 
 #endif
 
 #pragma link C++ class DD4hep::Geometry::SensitiveDetector+;
 #pragma link C++ class DD4hep::Geometry::SensitiveDetectorObject+;
 #pragma link C++ class DD4hep::Geometry::Handle<DD4hep::Geometry::SensitiveDetectorObject>+;
-#pragma link C++ class std::vector<DD4hep::Geometry::SensitiveDetector>+;
+#pragma link C++ class vector<DD4hep::Geometry::SensitiveDetector>+;
 
 // Volume.h
 #pragma link C++ class DD4hep::Geometry::Volume+;
 #pragma link C++ class DD4hep::Geometry::VolumeExtension+;
-#pragma link C++ class std::vector<DD4hep::Geometry::Volume>+;
+#pragma link C++ class vector<DD4hep::Geometry::Volume>+;
 #pragma link C++ class DD4hep::Geometry::Handle<TGeoVolume>+;
 
 #pragma link C++ class DD4hep::Geometry::PlacedVolume+;
 #ifndef __ROOTCLING__
-template std::vector<std::pair<std::string, int> >;
-template std::vector<std::pair<std::string, int> >::iterator;
+template vector<pair<string, int> >;
+template vector<pair<string, int> >::iterator;
 #endif
-#pragma link C++ class std::vector<std::pair<std::string, int> >+;
-#pragma link C++ class std::vector<std::pair<std::string, int> >::iterator;
+#pragma link C++ class vector<pair<string, int> >+;
+#pragma link C++ class vector<pair<string, int> >::iterator;
 #pragma link C++ class DD4hep::Geometry::PlacedVolumeExtension::VolIDs+;
 #pragma link C++ class DD4hep::Geometry::PlacedVolumeExtension+;
-#pragma link C++ class std::vector<DD4hep::Geometry::PlacedVolume>+;
+#pragma link C++ class vector<DD4hep::Geometry::PlacedVolume>+;
 #pragma link C++ class DD4hep::Geometry::Handle<TGeoNode>+;
-#pragma link C++ class std::vector<TGeoNode*>+;
-#pragma link C++ class std::vector<TGeoVolume*>+;
+#pragma link C++ class vector<TGeoNode*>+;
+#pragma link C++ class vector<TGeoVolume*>+;
 
 
 // Shapes.h
@@ -296,32 +297,32 @@ template std::vector<std::pair<std::string, int> >::iterator;
 #pragma link C++ class DD4hep::Geometry::UnionSolid+;
 #pragma link C++ class DD4hep::Geometry::IntersectionSolid+;
 
-#pragma link C++ class pair<std::string, std::string>+;
-#pragma link C++ class std::map<std::string, std::string>+;
-#pragma link C++ class std::map<std::string, std::string>::iterator;
-#pragma link C++ class std::map<std::string, std::string>::const_iterator;
+#pragma link C++ class pair<string, string>+;
+#pragma link C++ class map<string, string>+;
+#pragma link C++ class map<string, string>::iterator;
+#pragma link C++ class map<string, string>::const_iterator;
 
 #ifdef R__MACOSX
 // We only need these declarations for the clang compiler
-#pragma link C++ function operator==( const std::map<std::string, std::string>::iterator&, const std::map<std::string, std::string>::iterator& );
-#pragma link C++ function operator!=( const std::map<std::string, std::string>::iterator&, const std::map<std::string, std::string>::iterator& );
+#pragma link C++ function operator==( const map<string, string>::iterator&, const map<string, string>::iterator& );
+#pragma link C++ function operator!=( const map<string, string>::iterator&, const map<string, string>::iterator& );
 #endif
 
-#pragma link C++ class std::pair<std::string, std::map<std::string, std::string> >+;
-#pragma link C++ class std::map<std::string, std::map<std::string, std::string> >+;
-#pragma link C++ class std::map<std::string, std::map<std::string,std::string>>::iterator;
-#pragma link C++ class std::map<std::string, std::map<std::string,std::string>>::const_iterator;
+#pragma link C++ class pair<string, map<string, string> >+;
+#pragma link C++ class map<string, map<string, string> >+;
+#pragma link C++ class map<string, map<string,string>>::iterator;
+#pragma link C++ class map<string, map<string,string>>::const_iterator;
 
 #ifdef R__MACOSX
 // We only need these declarations for the clang compiler
-#pragma link C++ function operator==( const std::map<std::string, std::map<std::string,std::string>>::iterator&, const std::map<std::string, std::map<std::string,std::string>>::iterator& );
-#pragma link C++ function operator!=( const std::map<std::string, std::map<std::string,std::string>>::iterator&, const std::map<std::string, std::map<std::string,std::string>>::iterator& );
+#pragma link C++ function operator==( const map<string, map<string,string>>::iterator&, const map<string, map<string,string>>::iterator& );
+#pragma link C++ function operator!=( const map<string, map<string,string>>::iterator&, const map<string, map<string,string>>::iterator& );
 #endif
 
 #pragma link C++ class DD4hep::Geometry::LCDD+;
 
-#pragma link C++ function DD4hep::run_interpreter(const std::string& name);
-#pragma link C++ function DD4hep::Geometry::_toDictionary(const std::string&, const std::string&);
+#pragma link C++ function DD4hep::run_interpreter(const string& name);
+#pragma link C++ function DD4hep::Geometry::_toDictionary(const string&, const string&);
 
 #endif  // __CINT__
 
@@ -349,13 +350,13 @@ typedef DD4hep::DDSegmentation::CellID CellID;
 
 #pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<float>+;
 #pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<double>+;
-#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<std::string>+;
+#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<string>+;
 #if 0
 /// Severe problem due to template specialization!
-#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<std::vector<int> >+;
-#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<std::vector<float> >+;
-#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<std::vector<double> >+;
-#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<std::vector<std::string> >+;
+#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<vector<int> >+;
+#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<vector<float> >+;
+#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<vector<double> >+;
+#pragma link C++ class DD4hep::DDSegmentation::TypedSegmentationParameter<vector<string> >+;
 #endif
 
 #pragma link C++ class DD4hep::DDSegmentation::Segmentation+;
diff --git a/DDG4/include/DDG4/DDG4Dict.h b/DDG4/include/DDG4/DDG4Dict.h
index 8f3bd3665..2380630eb 100644
--- a/DDG4/include/DDG4/DDG4Dict.h
+++ b/DDG4/include/DDG4/DDG4Dict.h
@@ -34,6 +34,8 @@ namespace DD4hep {
 #pragma link off all classes;
 #pragma link off all functions;
 
+using namespace std;
+
 /// Define namespaces
 #pragma link C++ namespace DD4hep;
 #pragma link C++ namespace DD4hep::Geometry;
@@ -52,8 +54,8 @@ namespace DD4hep {
 #pragma link C++ class DD4hep::dd4hep_ptr<DD4hep::Simulation::ParticleExtension>+;
 #pragma link C++ class DD4hep::dd4hep_ptr<DD4hep::Simulation::ParticleExtension>::base_t+;
 #pragma link C++ class DD4hep::Simulation::Geant4Particle+;
-#pragma link C++ class std::vector<DD4hep::Simulation::Geant4Particle*>+;
-#pragma link C++ class std::map<int,DD4hep::Simulation::Geant4Particle*>+;
+#pragma link C++ class vector<DD4hep::Simulation::Geant4Particle*>+;
+#pragma link C++ class map<int,DD4hep::Simulation::Geant4Particle*>+;
 #pragma link C++ class map<int,DD4hep::Simulation::Geant4Particle*>::iterator;
 #pragma link C++ class map<int,DD4hep::Simulation::Geant4Particle*>::const_iterator;
 
@@ -63,24 +65,24 @@ namespace DD4hep {
 #pragma link C++ function operator!=( const map<int,DD4hep::Simulation::Geant4Particle*>::iterator&, const map<int,DD4hep::Simulation::Geant4Particle*>::iterator& );
 #endif
 
-//#pragma link C++ class std::type_info;
+//#pragma link C++ class type_info;
 #pragma link C++ class pair<DD4hep::Callback,unsigned long>+;
 
 /// Dictionaires for basic Hit data structures
 #pragma link C++ class DD4hep::Simulation::Geant4HitData+;
-#pragma link C++ class std::vector<DD4hep::Simulation::Geant4HitData*>+;
+#pragma link C++ class vector<DD4hep::Simulation::Geant4HitData*>+;
 #pragma link C++ class DD4hep::Simulation::Geant4HitData::Contribution+;
 #pragma link C++ class DD4hep::Simulation::Geant4HitData::Contributions+;
 
 /// Dictionaires for Tracker Hit data structures
 #pragma link C++ class DD4hep::Simulation::Geant4Tracker+;
 #pragma link C++ class DD4hep::Simulation::Geant4Tracker::Hit+;
-#pragma link C++ class std::vector<DD4hep::Simulation::Geant4Tracker::Hit*>+;
+#pragma link C++ class vector<DD4hep::Simulation::Geant4Tracker::Hit*>+;
 
 /// Dictionaires for Calorimeter Hit data structures
 #pragma link C++ class DD4hep::Simulation::Geant4Calorimeter+;
 #pragma link C++ class DD4hep::Simulation::Geant4Calorimeter::Hit+;
-#pragma link C++ class std::vector<DD4hep::Simulation::Geant4Calorimeter::Hit*>+;
+#pragma link C++ class vector<DD4hep::Simulation::Geant4Calorimeter::Hit*>+;
 
 #endif
 
diff --git a/DDG4/python/DDG4Dict.C b/DDG4/python/DDG4Dict.C
index c377cf290..42116de65 100644
--- a/DDG4/python/DDG4Dict.C
+++ b/DDG4/python/DDG4Dict.C
@@ -36,7 +36,7 @@ namespace DD4hep {
       x##Handle(const x##Handle& h) : action(h.action) { if ( action ) action->addRef();} \
       ~x##Handle()                  { if ( action) action->release();                   } \
       Geant4##x* release()          { Geant4##x* tmp = action; action=0; return tmp;    } \
-      operator Geant4##x* () const  { return action;     }              \
+      operator DD4hep::Simulation::Geant4##x* () const  { return action;     } \
       Geant4##x* operator->() const { return action;     }              \
       Geant4##x* get() const        { return action;     }              \
     }
@@ -196,123 +196,127 @@ namespace DD4hep {
 typedef DD4hep::Simulation::Geant4ActionCreation Geant4ActionCreation;
 
 #include "DD4hep/objects/DetectorInterna.h"
+using namespace std;
+using namespace DD4hep::Simulation;
 
 // CINT configuration
 #if defined(__CINT__) || defined(__MAKECINT__) || defined(__CLING__) || defined(__ROOTCLING__)
-#pragma link C++ namespace DDSegmentation;
+
+//#pragma link C++ namespace DDSegmentation;
 
 /// Geant4 Vertex dictionaries
-#pragma link C++ class DD4hep::Simulation::VertexExtension+;
-#pragma link C++ class DD4hep::Simulation::Geant4Vertex+;
-#pragma link C++ class std::vector<DD4hep::Simulation::Geant4Vertex*>+;
-#pragma link C++ class std::map<int,DD4hep::Simulation::Geant4Vertex*>+;
-
-#pragma link C++ class DD4hep::Simulation::Geant4ParticleMap+;
-#pragma link C++ class DD4hep::Simulation::PrimaryExtension+;
-#pragma link C++ class DD4hep::Simulation::Geant4PrimaryInteraction+;
-#pragma link C++ class std::map<int,DD4hep::Simulation::Geant4PrimaryInteraction*>+;
-#pragma link C++ class DD4hep::Simulation::Geant4PrimaryEvent+;
-
-#pragma link C++ class DD4hep::PropertyResult;
+#pragma link C++ class VertexExtension+;
+#pragma link C++ class Geant4Vertex+;
+#pragma link C++ class vector<Geant4Vertex*>+;
+#pragma link C++ class map<int,Geant4Vertex*>+;
+
+#pragma link C++ class Geant4ParticleMap+;
+#pragma link C++ class PrimaryExtension+;
+#pragma link C++ class Geant4PrimaryInteraction+;
+#pragma link C++ class vector<Geant4PrimaryInteraction*>+;
+#pragma link C++ class map<int,Geant4PrimaryInteraction*>+;
+#pragma link C++ class Geant4PrimaryEvent+;
+
+#pragma link C++ class PropertyResult;
 #pragma link C++ class Geant4InputAction::Particles;
 
 #if ROOT_VERSION_CODE < ROOT_VERSION(6,0,0)
 namespace {
   struct bla {
-    dd4hep_ptr<DD4hep::Simulation::Geant4InputAction::Particles>  __m1;
-    dd4hep_ptr<DD4hep::Simulation::ParticleExtension>  __m2;
-    dd4hep_ptr<DD4hep::Simulation::DataExtension>  __m3;
+    DD4hep::dd4hep_ptr<Geant4InputAction::Particles>  __m1;
+    DD4hep::dd4hep_ptr<ParticleExtension>  __m2;
+    DD4hep::dd4hep_ptr<DataExtension>  __m3;
   };
 }
 #endif
-#pragma link C++ class dd4hep_ptr<DD4hep::Simulation::VertexExtension>+;
-#pragma link C++ class dd4hep_ptr<DD4hep::Simulation::PrimaryExtension>+;
-#pragma link C++ class dd4hep_ptr<DD4hep::Simulation::Geant4InputAction::Particles>;
-#pragma link C++ class dd4hep_ptr<DD4hep::Simulation::Geant4InputAction::Particles>::base_t;
+#pragma link C++ class DD4hep::dd4hep_ptr<VertexExtension>+;
+#pragma link C++ class DD4hep::dd4hep_ptr<PrimaryExtension>+;
+#pragma link C++ class DD4hep::dd4hep_ptr<Geant4InputAction::Particles>;
+#pragma link C++ class DD4hep::dd4hep_ptr<Geant4InputAction::Particles>::base_t;
 
 // Basic stuff
-#pragma link C++ class DD4hep::Simulation::Geant4ActionCreation;
-#pragma link C++ class DD4hep::Simulation::Geant4Kernel;
-#pragma link C++ class DD4hep::Simulation::Geant4Kernel::PhaseSelector;
-#pragma link C++ class DD4hep::Simulation::Geant4Context;
-#pragma link C++ class DD4hep::Simulation::KernelHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4ActionContainer;
-
-#pragma link C++ class DD4hep::Simulation::Geant4Action;
-#pragma link C++ class DD4hep::Simulation::ActionHandle;
-
-#pragma link C++ class DD4hep::Simulation::RunActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4RunActionSequence;
-#pragma link C++ class DD4hep::Simulation::RunActionHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4SharedRunAction;
-#pragma link C++ class DD4hep::Simulation::Geant4RunAction;
-
-#pragma link C++ class DD4hep::Simulation::EventActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4EventActionSequence;
-#pragma link C++ class DD4hep::Simulation::EventActionHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4SharedEventAction;
-#pragma link C++ class DD4hep::Simulation::Geant4EventAction;
-
-#pragma link C++ class DD4hep::Simulation::SteppingActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4SteppingActionSequence;
-#pragma link C++ class DD4hep::Simulation::SteppingActionHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4SharedSteppingAction;
-#pragma link C++ class DD4hep::Simulation::Geant4SteppingAction;
-
-#pragma link C++ class DD4hep::Simulation::StackingActionHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4StackingAction;
-#pragma link C++ class DD4hep::Simulation::StackingActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4StackingActionSequence;
-
-#pragma link C++ class DD4hep::Simulation::TrackingActionHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4TrackingAction;
-#pragma link C++ class DD4hep::Simulation::TrackingActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4TrackingActionSequence;
-
-#pragma link C++ class DD4hep::Simulation::GeneratorActionHandle;
-#pragma link C++ class DD4hep::Simulation::GeneratorActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4GeneratorActionSequence;
-#pragma link C++ class DD4hep::Simulation::Geant4GeneratorAction;
-
-#pragma link C++ class DD4hep::Simulation::Geant4InputAction;
-#pragma link C++ class DD4hep::Simulation::Geant4EventReader;
-
-#pragma link C++ class DD4hep::Simulation::PhysicsListHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4PhysicsList;
-#pragma link C++ class DD4hep::Simulation::PhysicsListActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4PhysicsListActionSequence;
-
-#pragma link C++ class DD4hep::Simulation::UserInitializationHandle;
-#pragma link C++ class DD4hep::Simulation::UserInitializationSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4UserInitializationSequence;
-#pragma link C++ class DD4hep::Simulation::Geant4UserInitialization;
-
-#pragma link C++ class DD4hep::Simulation::DetectorConstructionHandle;
-#pragma link C++ class DD4hep::Simulation::DetectorConstructionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4DetectorConstructionSequence;
-#pragma link C++ class DD4hep::Simulation::Geant4DetectorConstruction;
-
-#pragma link C++ class DD4hep::Simulation::SensitiveHandle;
-#pragma link C++ class DD4hep::Simulation::SensDetActionSequenceHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4ActionSD;
-#pragma link C++ class DD4hep::Simulation::Geant4Sensitive;
-#pragma link C++ class DD4hep::Simulation::Geant4SensDetActionSequence;
-
-#pragma link C++ class DD4hep::Simulation::FilterHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4Filter;
-
-#pragma link C++ class DD4hep::Simulation::PhaseActionHandle;
-#pragma link C++ class DD4hep::Simulation::Geant4ActionPhase;
-#pragma link C++ class DD4hep::Simulation::Geant4PhaseAction;
-
-#pragma link C++ class DD4hep::Simulation::Callback;
-#pragma link C++ class DD4hep::Simulation::Callback::mfunc_t;
+#pragma link C++ class Geant4ActionCreation;
+#pragma link C++ class Geant4Kernel;
+#pragma link C++ class Geant4Kernel::PhaseSelector;
+#pragma link C++ class Geant4Context;
+#pragma link C++ class KernelHandle;
+#pragma link C++ class Geant4ActionContainer;
+
+#pragma link C++ class Geant4Action;
+#pragma link C++ class ActionHandle;
+
+#pragma link C++ class RunActionSequenceHandle;
+#pragma link C++ class Geant4RunActionSequence;
+#pragma link C++ class RunActionHandle;
+#pragma link C++ class Geant4SharedRunAction;
+#pragma link C++ class Geant4RunAction;
+
+#pragma link C++ class EventActionSequenceHandle;
+#pragma link C++ class Geant4EventActionSequence;
+#pragma link C++ class EventActionHandle;
+#pragma link C++ class Geant4SharedEventAction;
+#pragma link C++ class Geant4EventAction;
+
+#pragma link C++ class SteppingActionSequenceHandle;
+#pragma link C++ class Geant4SteppingActionSequence;
+#pragma link C++ class SteppingActionHandle;
+#pragma link C++ class Geant4SharedSteppingAction;
+#pragma link C++ class Geant4SteppingAction;
+
+#pragma link C++ class StackingActionHandle;
+#pragma link C++ class Geant4StackingAction;
+#pragma link C++ class StackingActionSequenceHandle;
+#pragma link C++ class Geant4StackingActionSequence;
+
+#pragma link C++ class TrackingActionHandle;
+#pragma link C++ class Geant4TrackingAction;
+#pragma link C++ class TrackingActionSequenceHandle;
+#pragma link C++ class Geant4TrackingActionSequence;
+
+#pragma link C++ class GeneratorActionHandle;
+#pragma link C++ class GeneratorActionSequenceHandle;
+#pragma link C++ class Geant4GeneratorActionSequence;
+#pragma link C++ class Geant4GeneratorAction;
+
+#pragma link C++ class Geant4InputAction;
+#pragma link C++ class Geant4EventReader;
+
+#pragma link C++ class PhysicsListHandle;
+#pragma link C++ class Geant4PhysicsList;
+#pragma link C++ class PhysicsListActionSequenceHandle;
+#pragma link C++ class Geant4PhysicsListActionSequence;
+
+#pragma link C++ class UserInitializationHandle;
+#pragma link C++ class UserInitializationSequenceHandle;
+#pragma link C++ class Geant4UserInitializationSequence;
+#pragma link C++ class Geant4UserInitialization;
+
+#pragma link C++ class DetectorConstructionHandle;
+#pragma link C++ class DetectorConstructionSequenceHandle;
+#pragma link C++ class Geant4DetectorConstructionSequence;
+#pragma link C++ class Geant4DetectorConstruction;
+
+#pragma link C++ class SensitiveHandle;
+#pragma link C++ class SensDetActionSequenceHandle;
+#pragma link C++ class Geant4ActionSD;
+#pragma link C++ class Geant4Sensitive;
+#pragma link C++ class Geant4SensDetActionSequence;
+
+#pragma link C++ class FilterHandle;
+#pragma link C++ class Geant4Filter;
+
+#pragma link C++ class PhaseActionHandle;
+#pragma link C++ class Geant4ActionPhase;
+#pragma link C++ class Geant4PhaseAction;
+
+#pragma link C++ class DD4hep::Callback;
+#pragma link C++ class DD4hep::Callback::mfunc_t;
 
 // Other (specialized) components
-#pragma link C++ class DD4hep::Simulation::Geant4DataDump;
-#pragma link C++ class DD4hep::Simulation::Geant4Random;
-#pragma link C++ class DD4hep::Simulation::Geant4ParticleHandler;
-#pragma link C++ class DD4hep::Simulation::Geant4UserParticleHandler;
+#pragma link C++ class Geant4DataDump;
+#pragma link C++ class Geant4Random;
+#pragma link C++ class Geant4ParticleHandler;
+#pragma link C++ class Geant4UserParticleHandler;
 
 
 // somehow the symbol Geometry moved into global namespace. Redeclare it here
diff --git a/examples/ClientTests/CMakeLists.txt b/examples/ClientTests/CMakeLists.txt
index 049925a80..ae9d9bed1 100644
--- a/examples/ClientTests/CMakeLists.txt
+++ b/examples/ClientTests/CMakeLists.txt
@@ -41,8 +41,11 @@ foreach (test Assemblies BoxTrafos IronCylinder LheD_tracker MagnetFields Materi
 endforeach()
 #
 #
-#
-foreach (test Assemblies BoxTrafos IronCylinder LheD_tracker MagnetFields MiniTel SiliconBlock NestedSimple NestedDetectors )
+# Note:
+# IronCylinder has no segmentation!
+# MaterialTester no geometry
+# SectorBarrelCalorimeter is bad
+foreach (test Assemblies BoxTrafos LheD_tracker MagnetFields MiniTel SiliconBlock NestedSimple NestedDetectors )
   #
   # Test material scans in [origine to 10 meters in y]
   dd4hep_add_test_reg( ClientTests_${test}_material_scan
-- 
GitLab