From 6a493412b7240e5904b3c72af2a6722bee4c5153 Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Wed, 28 Sep 2016 17:16:11 +0200
Subject: [PATCH] Allow parsers to be externalized to other projects

---
 DDAlign/src/plugins/AlignmentParser.cpp       |  3 +--
 DDCore/include/DD4hep/ComponentProperties.h   |  4 +--
 DDCore/include/DD4hep/Handle.h                | 10 +++----
 DDCore/include/DD4hep/Parsers.h               | 20 +++++++++++---
 DDCore/include/DD4hep/Primitives.h            |  8 ++++--
 DDCore/include/DD4hep/ToStream.h              | 19 ++++++++++---
 .../include/DD4hep/objects/BasicGrammar_inl.h | 12 ++++++---
 DDCore/src/AlignmentData.cpp                  |  1 +
 DDCore/src/BasicGrammar.cpp                   |  2 +-
 DDCore/src/ComponentProperties.cpp            |  1 +
 DDCore/src/parsers/GrammarsV2.h               | 23 ++++++++--------
 .../ParserStandardList_Mapint_bool.cpp        |  2 +-
 .../ParserStandardList_Mapint_double.cpp      |  2 +-
 .../ParserStandardList_Mapint_float.cpp       |  2 +-
 .../parsers/ParserStandardList_Mapint_int.cpp |  2 +-
 .../ParserStandardList_Mapint_long.cpp        |  2 +-
 .../ParserStandardList_Mapint_string.cpp      |  2 +-
 .../ParserStandardList_Mapped_bool.cpp        |  2 +-
 .../ParserStandardList_Mapped_double.cpp      |  2 +-
 .../ParserStandardList_Mapped_float.cpp       |  2 +-
 .../parsers/ParserStandardList_Mapped_int.cpp |  2 +-
 .../ParserStandardList_Mapped_long.cpp        |  2 +-
 .../ParserStandardList_Mapped_string.cpp      |  2 +-
 .../ParserStandardList_Mapstring_bool.cpp     |  2 +-
 .../ParserStandardList_Mapstring_double.cpp   |  2 +-
 .../ParserStandardList_Mapstring_float.cpp    |  2 +-
 .../ParserStandardList_Mapstring_int.cpp      |  2 +-
 .../ParserStandardList_Mapstring_long.cpp     |  2 +-
 .../ParserStandardList_Mapstring_string.cpp   |  2 +-
 .../parsers/ParserStandardList_list_bool.cpp  |  2 +-
 .../ParserStandardList_list_double.cpp        |  2 +-
 .../parsers/ParserStandardList_list_float.cpp |  2 +-
 .../parsers/ParserStandardList_list_int.cpp   |  2 +-
 .../parsers/ParserStandardList_list_long.cpp  |  2 +-
 .../ParserStandardList_list_string.cpp        |  2 +-
 .../parsers/ParserStandardList_set_bool.cpp   |  2 +-
 .../parsers/ParserStandardList_set_double.cpp |  2 +-
 .../parsers/ParserStandardList_set_float.cpp  |  2 +-
 .../parsers/ParserStandardList_set_int.cpp    |  2 +-
 .../parsers/ParserStandardList_set_long.cpp   |  2 +-
 .../parsers/ParserStandardList_set_string.cpp |  2 +-
 .../ParserStandardList_vector_bool.cpp        |  2 +-
 .../ParserStandardList_vector_double.cpp      |  2 +-
 .../ParserStandardList_vector_float.cpp       |  2 +-
 .../parsers/ParserStandardList_vector_int.cpp |  2 +-
 .../ParserStandardList_vector_long.cpp        |  2 +-
 .../ParserStandardList_vector_string.cpp      |  2 +-
 DDCore/src/parsers/ParsersFactory.h           |  1 +
 .../parsers/ParsersObjects_PxPyPzEVector.cpp  |  5 ++--
 .../src/parsers/ParsersObjects_XYZPoint.cpp   |  5 ++--
 .../src/parsers/ParsersObjects_XYZVector.cpp  |  6 ++---
 .../src/parsers/ParsersStandardListCommon.h   |  4 +--
 .../src/parsers/ParsersStandardMiscCommon.h   |  1 -
 DDCore/src/parsers/ParsersStandardSingle.cpp  |  1 -
 DDCore/src/parsers/UsedParser.h               | 27 +++++++++++++++++++
 DDG4/include/DDG4/Geant4ActionPhase.h         |  1 +
 56 files changed, 143 insertions(+), 83 deletions(-)
 create mode 100644 DDCore/src/parsers/UsedParser.h

diff --git a/DDAlign/src/plugins/AlignmentParser.cpp b/DDAlign/src/plugins/AlignmentParser.cpp
index ae840d820..1d4939fcc 100644
--- a/DDAlign/src/plugins/AlignmentParser.cpp
+++ b/DDAlign/src/plugins/AlignmentParser.cpp
@@ -344,7 +344,7 @@ static long setup_Alignment(lcdd_t& lcdd, const xml_h& e) {
   bool open_trans = e.hasChild(_ALU(close_transaction));
   bool close_trans = e.hasChild(_ALU(close_transaction));
 
-  GlobalAlignmentCache::install(lcdd);
+  GlobalAlignmentCache* cache = GlobalAlignmentCache::install(lcdd);
   /// Check if transaction already present. If not, open, else issue an error
   if ( open_trans )   {
     if ( AlignmentStack::exists() )  {
@@ -355,7 +355,6 @@ static long setup_Alignment(lcdd_t& lcdd, const xml_h& e) {
   AlignmentStack& stack = AlignmentStack::get();
   (DD4hep::Converter<DD4hep::alignment>(lcdd,lcdd.world().ptr(),&stack))(e);
   if ( close_trans )  {
-    GlobalAlignmentCache* cache = lcdd.extension<Alignments::GlobalAlignmentCache>();
     cache->commit(stack);
     AlignmentStack::get().release();
   }
diff --git a/DDCore/include/DD4hep/ComponentProperties.h b/DDCore/include/DD4hep/ComponentProperties.h
index e757b3519..bef20e83c 100644
--- a/DDCore/include/DD4hep/ComponentProperties.h
+++ b/DDCore/include/DD4hep/ComponentProperties.h
@@ -16,8 +16,8 @@
 #define DD4HEP_DDG4_COMPONENTPROPERTIES_H
 
 // Framework include files
-#include "DD4hep/Primitives.h"
-#include "DD4hep/Exceptions.h"
+//#include "DD4hep/Primitives.h"
+//#include "DD4hep/Exceptions.h"
 
 // C/C++ include files
 #include <algorithm>
diff --git a/DDCore/include/DD4hep/Handle.h b/DDCore/include/DD4hep/Handle.h
index 2835e8a85..67f86716b 100644
--- a/DDCore/include/DD4hep/Handle.h
+++ b/DDCore/include/DD4hep/Handle.h
@@ -258,15 +258,15 @@ namespace DD4hep {
   {      return _ptrToString((void*)p, fmt);       }
 
   /// String conversions: string to boolean value  \ingroup DD4HEP_GEOMETRY
-  bool _toBool(const std::string& value);
+  bool   _toBool(const std::string& value);
   /// String conversions: string to integer value  \ingroup DD4HEP_GEOMETRY
-  short _toShort(const std::string& value);
+  short  _toShort(const std::string& value);
   /// String conversions: string to integer value  \ingroup DD4HEP_GEOMETRY
-  int _toInt(const std::string& value);
+  int    _toInt(const std::string& value);
   /// String conversions: string to long integer value  \ingroup DD4HEP_GEOMETRY
-  long _toLong(const std::string& value);
+  long   _toLong(const std::string& value);
   /// String conversions: string to float value  \ingroup DD4HEP_GEOMETRY
-  float _toFloat(const std::string& value);
+  float  _toFloat(const std::string& value);
   /// String conversions: string to double value  \ingroup DD4HEP_GEOMETRY
   double _toDouble(const std::string& value);
 
diff --git a/DDCore/include/DD4hep/Parsers.h b/DDCore/include/DD4hep/Parsers.h
index 0cc735fe5..87f6479c2 100644
--- a/DDCore/include/DD4hep/Parsers.h
+++ b/DDCore/include/DD4hep/Parsers.h
@@ -24,9 +24,6 @@
 #include <set>
 #include <map>
 #include <deque>
-#include "Math/Point3D.h"
-#include "Math/Vector3D.h"
-#include "Math/Vector4D.h"
 
 // ============================================================================
 #define PARSERS_DECL_FOR_SINGLE(Type)                 \
@@ -557,6 +554,21 @@ namespace DD4hep {
       //
       return 1;                            //  RETURN
     }
+    // ========================================================================
+  }//                                          end of namespace Parsers
+  // ==========================================================================
+}//                                            end of namespace DD4hep
+
+#ifndef DD4HEP_PARSERS_NO_ROOT
+
+#include "Math/Point3D.h"
+#include "Math/Vector3D.h"
+#include "Math/Vector4D.h"
+
+/// Namespace for the AIDA detector description toolkit
+namespace DD4hep {
+  /// Namespace for the AIDA detector for utilities using boost::spirit parsers
+  namespace Parsers {
 
     // ========================================================================
     /// parse 3D-point
@@ -731,11 +743,11 @@ namespace DD4hep {
      *   @date 2009-09-05
      */
     PARSERS_DECL_FOR_LIST(ROOT::Math::PxPyPzEVector)
-
     // ========================================================================
   }//                                          end of namespace Parsers
   // ==========================================================================
 }//                                            end of namespace DD4hep
+#endif
 // ============================================================================
 // The END
 // ============================================================================
diff --git a/DDCore/include/DD4hep/Primitives.h b/DDCore/include/DD4hep/Primitives.h
index 06e472875..c9fb3a352 100644
--- a/DDCore/include/DD4hep/Primitives.h
+++ b/DDCore/include/DD4hep/Primitives.h
@@ -15,10 +15,10 @@
 #ifndef DD4HEP_DD4HEP_PRIMITIVES_H
 #define DD4HEP_DD4HEP_PRIMITIVES_H
 
-#include "DDSegmentation/Segmentation.h"
-
 // C/C++ include files
+#include <map>
 #include <limits>
+#include <typeinfo>
 #include <algorithm>
 #include <stdexcept>
 
@@ -29,6 +29,9 @@ namespace DD4hep {
   namespace DDSegmentation  {
     class BitField64;
     class BitFieldValue;
+    /// Useful typedefs to differentiate cell IDs and volume IDs
+    typedef long long int CellID;
+    typedef long long int VolumeID;
   }
 
   /// We need it so often: one-at-time 32 bit hash function
@@ -70,6 +73,7 @@ namespace DD4hep {
 
   /// ABI information about type names
   std::string typeName(const std::type_info& type);
+  /// Check type infos for equivalence (dynamic casts) using ABI information
   void typeinfoCheck(const std::type_info& typ1, const std::type_info& typ2, const std::string& text = "");
   /// Throw exception when handles are check for validity
   void invalidHandleError(const std::type_info& type);
diff --git a/DDCore/include/DD4hep/ToStream.h b/DDCore/include/DD4hep/ToStream.h
index ba7ece784..67410f891 100644
--- a/DDCore/include/DD4hep/ToStream.h
+++ b/DDCore/include/DD4hep/ToStream.h
@@ -27,9 +27,6 @@
 #include <deque>
 #include <string>
 #include <sstream>
-#include "Math/Point3D.h"
-#include "Math/Vector3D.h"
-#include "Math/Vector4D.h"
 
 // ============================================================================
 /** @file DD4hep/ToStream.h
@@ -306,6 +303,20 @@ namespace DD4hep {
       s.flags(orig_flags);
       return s.str();
     }
+    // ========================================================================
+  }//                                            end of namespace DD4hep::Utils
+  // ==========================================================================
+}//                                                     end of namespace DD4hep
+
+#ifndef DD4HEP_PARSERS_NO_ROOT
+#include "Math/Point3D.h"
+#include "Math/Vector3D.h"
+#include "Math/Vector4D.h"
+/// Namespace for the AIDA detector description toolkit
+namespace DD4hep {
+  // ==========================================================================
+  /// Utility namespace to support boost::spirit
+  namespace Utils {
     // ============================================================================
     /// print XYZ point
     std::ostream& toStream(const ROOT::Math::XYZPoint& obj, std::ostream& s);
@@ -313,11 +324,11 @@ namespace DD4hep {
     std::ostream& toStream(const ROOT::Math::XYZVector& obj, std::ostream& s);
     /// print Lorentz vector
     std::ostream& toStream(const ROOT::Math::PxPyPzEVector& obj, std::ostream& s);
-
     // ========================================================================
   }//                                            end of namespace DD4hep::Utils
   // ==========================================================================
 }//                                                     end of namespace DD4hep
+#endif
 // ============================================================================
 // The END
 // ============================================================================
diff --git a/DDCore/include/DD4hep/objects/BasicGrammar_inl.h b/DDCore/include/DD4hep/objects/BasicGrammar_inl.h
index 6ba6274fd..997e3635a 100644
--- a/DDCore/include/DD4hep/objects/BasicGrammar_inl.h
+++ b/DDCore/include/DD4hep/objects/BasicGrammar_inl.h
@@ -29,8 +29,11 @@
 #ifdef DD4HEP_USE_BOOST
 #include "DD4hep/Parsers.h"
 #include "DD4hep/ToStream.h"
-#endif
 #include "XML/Evaluator.h"
+namespace DD4hep { XmlTools::Evaluator& g4Evaluator();  }
+namespace {  static XmlTools::Evaluator& s__eval(DD4hep::g4Evaluator());  }
+#endif
+
 #include "Math/Point3D.h"
 #include "Math/Vector3D.h"
 #include "Math/Vector4D.h"
@@ -43,9 +46,6 @@
 #include <map>
 #include <deque>
 
-namespace DD4hep { XmlTools::Evaluator& g4Evaluator();  }
-namespace {  static XmlTools::Evaluator& s__eval(DD4hep::g4Evaluator());  }
-
 /// Namespace for the AIDA detector description toolkit
 namespace DD4hep {
 
@@ -271,12 +271,16 @@ namespace DD4hep {
       s.erase(idx, 5);
     while (s[0] == ' ')
       s.erase(0, 1);
+#ifdef DD4HEP_USE_BOOST
     double result = s__eval.evaluate(s.c_str());
     if (s__eval.status() != XmlTools::Evaluator::OK) {
       return 0;
     }
     *p = (T)result;
     return 1;
+#else
+    return 0;
+#endif
   }
 
   /// String evaluator
diff --git a/DDCore/src/AlignmentData.cpp b/DDCore/src/AlignmentData.cpp
index 6319fece5..53310d0e9 100644
--- a/DDCore/src/AlignmentData.cpp
+++ b/DDCore/src/AlignmentData.cpp
@@ -16,6 +16,7 @@
 #include "DD4hep/AlignmentData.h"
 #include "DD4hep/MatrixHelpers.h"
 #include "DD4hep/InstanceCount.h"
+#include "DD4hep/Primitives.h"
 
 // ROOT include files
 #include "TGeoMatrix.h"
diff --git a/DDCore/src/BasicGrammar.cpp b/DDCore/src/BasicGrammar.cpp
index 9506cda6e..b66123a56 100644
--- a/DDCore/src/BasicGrammar.cpp
+++ b/DDCore/src/BasicGrammar.cpp
@@ -13,7 +13,7 @@
 //==========================================================================
 
 // Framework include files
-#include "DD4hep/Handle.h"
+#include "DD4hep/Primitives.h"
 #include "DD4hep/Exceptions.h"
 #include "DD4hep/BasicGrammar.h"
 
diff --git a/DDCore/src/ComponentProperties.cpp b/DDCore/src/ComponentProperties.cpp
index e9ab5986d..6734afc0b 100644
--- a/DDCore/src/ComponentProperties.cpp
+++ b/DDCore/src/ComponentProperties.cpp
@@ -14,6 +14,7 @@
 
 // Framework include files
 #include "DD4hep/Printout.h"
+#include "DD4hep/Primitives.h"
 #include "DD4hep/BasicGrammar.h"
 #include "DD4hep/ComponentProperties.h"
 
diff --git a/DDCore/src/parsers/GrammarsV2.h b/DDCore/src/parsers/GrammarsV2.h
index 5342418e0..f06bcb5be 100644
--- a/DDCore/src/parsers/GrammarsV2.h
+++ b/DDCore/src/parsers/GrammarsV2.h
@@ -30,15 +30,7 @@
 //==============================================================================
 // Boost:
 //==============================================================================
-#ifdef __GNUC__
-#define __DD4HEP_LOCAL_GNUC__ __GNUC__
-#undef __GNUC__
-// Boost spits out an error if __GNUC__ is defined!
-#include <boost/spirit/include/qi.hpp>
-#define __GNUC__ __DD4HEP_LOCAL_GNUC__
-#else
 #include <boost/spirit/include/qi.hpp>
-#endif
 #include <boost/fusion/include/unused.hpp>
 #include <boost/fusion/include/std_pair.hpp>
 
@@ -50,10 +42,6 @@
 
 #include <boost/spirit/repository/include/qi_confix.hpp>
 
-#include "Math/Point3D.h"
-#include "Math/Vector3D.h"
-#include "Math/Vector4D.h"
-
 //==============================================================================
 namespace DD4hep {  namespace Parsers {
     //==============================================================================
@@ -383,8 +371,18 @@ namespace DD4hep {  namespace Parsers {
       // ----------------------------------------------------------------------------
     }; // END KeyValueGrammar
     // We don't register KeyalueGrammar because it's a special parser
+    // ============================================================================
+  }} //   DD4hep::Parsers
 
 
+//==============================================================================
+#ifndef DD4HEP_PARSERS_NO_ROOT
+#include "Math/Point3D.h"
+#include "Math/Vector3D.h"
+#include "Math/Vector4D.h"
+
+namespace DD4hep {  namespace Parsers {
+
     // ============================================================================
     template< typename Iterator, typename PointT, typename Skipper>
     struct Pnt3DGrammar : qi::grammar<Iterator, PointT(), Skipper> {
@@ -500,5 +498,6 @@ namespace DD4hep {  namespace Parsers {
     };
     // ============================================================================
   }} //   DD4hep::Parsers
+#endif
 //============================================================================
 #endif
diff --git a/DDCore/src/parsers/ParserStandardList_Mapint_bool.cpp b/DDCore/src/parsers/ParserStandardList_Mapint_bool.cpp
index c674004c5..09812a49b 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapint_bool.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapint_bool.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapint_bool.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapint_double.cpp b/DDCore/src/parsers/ParserStandardList_Mapint_double.cpp
index 0dd096d73..1fe423774 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapint_double.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapint_double.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapint_double.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapint_float.cpp b/DDCore/src/parsers/ParserStandardList_Mapint_float.cpp
index 10a1fed51..c64853232 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapint_float.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapint_float.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapint_float.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapint_int.cpp b/DDCore/src/parsers/ParserStandardList_Mapint_int.cpp
index fb2d86e59..78f3f82ed 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapint_int.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapint_int.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapint_int.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapint_long.cpp b/DDCore/src/parsers/ParserStandardList_Mapint_long.cpp
index 9cb899514..1f4d3bb5c 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapint_long.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapint_long.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapint_long.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapint_string.cpp b/DDCore/src/parsers/ParserStandardList_Mapint_string.cpp
index 8da76795f..13b0bec08 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapint_string.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapint_string.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapint_string.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapped_bool.cpp b/DDCore/src/parsers/ParserStandardList_Mapped_bool.cpp
index 0adc35d5d..5062a74d8 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapped_bool.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapped_bool.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapped_bool.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapped_double.cpp b/DDCore/src/parsers/ParserStandardList_Mapped_double.cpp
index 695e95986..378ce13ea 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapped_double.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapped_double.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapped_double.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapped_float.cpp b/DDCore/src/parsers/ParserStandardList_Mapped_float.cpp
index 8c3c3fb1f..77bc0e921 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapped_float.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapped_float.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapped_float.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapped_int.cpp b/DDCore/src/parsers/ParserStandardList_Mapped_int.cpp
index 2c27ffc03..9e51c4731 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapped_int.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapped_int.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapped_int.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapped_long.cpp b/DDCore/src/parsers/ParserStandardList_Mapped_long.cpp
index 6dd4597a5..415360f81 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapped_long.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapped_long.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapped_long.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapped_string.cpp b/DDCore/src/parsers/ParserStandardList_Mapped_string.cpp
index 0c7e32907..2b85b89de 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapped_string.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapped_string.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapped_string.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapstring_bool.cpp b/DDCore/src/parsers/ParserStandardList_Mapstring_bool.cpp
index af53eb1f0..b65fa263c 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapstring_bool.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapstring_bool.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapstring_bool.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapstring_double.cpp b/DDCore/src/parsers/ParserStandardList_Mapstring_double.cpp
index 81c6ce5bc..1069c3987 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapstring_double.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapstring_double.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapstring_double.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapstring_float.cpp b/DDCore/src/parsers/ParserStandardList_Mapstring_float.cpp
index a3261a123..215867a58 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapstring_float.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapstring_float.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapstring_float.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapstring_int.cpp b/DDCore/src/parsers/ParserStandardList_Mapstring_int.cpp
index ea03bc113..aae0436f4 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapstring_int.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapstring_int.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapstring_int.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapstring_long.cpp b/DDCore/src/parsers/ParserStandardList_Mapstring_long.cpp
index 3d3acd173..70601bdda 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapstring_long.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapstring_long.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapstring_long.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_Mapstring_string.cpp b/DDCore/src/parsers/ParserStandardList_Mapstring_string.cpp
index fb80bfde6..815bdc05c 100644
--- a/DDCore/src/parsers/ParserStandardList_Mapstring_string.cpp
+++ b/DDCore/src/parsers/ParserStandardList_Mapstring_string.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_Mapstring_string.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_list_bool.cpp b/DDCore/src/parsers/ParserStandardList_list_bool.cpp
index 24890030d..57211c4f8 100644
--- a/DDCore/src/parsers/ParserStandardList_list_bool.cpp
+++ b/DDCore/src/parsers/ParserStandardList_list_bool.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_list_bool.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_list_double.cpp b/DDCore/src/parsers/ParserStandardList_list_double.cpp
index 28c910501..0569d65fe 100644
--- a/DDCore/src/parsers/ParserStandardList_list_double.cpp
+++ b/DDCore/src/parsers/ParserStandardList_list_double.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_list_double.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_list_float.cpp b/DDCore/src/parsers/ParserStandardList_list_float.cpp
index d3fc19d61..69157cd58 100644
--- a/DDCore/src/parsers/ParserStandardList_list_float.cpp
+++ b/DDCore/src/parsers/ParserStandardList_list_float.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_list_float.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_list_int.cpp b/DDCore/src/parsers/ParserStandardList_list_int.cpp
index 4de5ba3b0..4046c477d 100644
--- a/DDCore/src/parsers/ParserStandardList_list_int.cpp
+++ b/DDCore/src/parsers/ParserStandardList_list_int.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_list_int.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_list_long.cpp b/DDCore/src/parsers/ParserStandardList_list_long.cpp
index d2d869aff..4833f9b54 100644
--- a/DDCore/src/parsers/ParserStandardList_list_long.cpp
+++ b/DDCore/src/parsers/ParserStandardList_list_long.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_list_long.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_list_string.cpp b/DDCore/src/parsers/ParserStandardList_list_string.cpp
index 7e1f28046..c39aba3cb 100644
--- a/DDCore/src/parsers/ParserStandardList_list_string.cpp
+++ b/DDCore/src/parsers/ParserStandardList_list_string.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_list_string.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_set_bool.cpp b/DDCore/src/parsers/ParserStandardList_set_bool.cpp
index c7a383d7e..60c2b56b5 100644
--- a/DDCore/src/parsers/ParserStandardList_set_bool.cpp
+++ b/DDCore/src/parsers/ParserStandardList_set_bool.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_set_bool.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_set_double.cpp b/DDCore/src/parsers/ParserStandardList_set_double.cpp
index bea498ad3..dcc952f80 100644
--- a/DDCore/src/parsers/ParserStandardList_set_double.cpp
+++ b/DDCore/src/parsers/ParserStandardList_set_double.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_set_double.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_set_float.cpp b/DDCore/src/parsers/ParserStandardList_set_float.cpp
index 413d2fa0d..06706be40 100644
--- a/DDCore/src/parsers/ParserStandardList_set_float.cpp
+++ b/DDCore/src/parsers/ParserStandardList_set_float.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_set_float.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_set_int.cpp b/DDCore/src/parsers/ParserStandardList_set_int.cpp
index a906733c1..5155901d0 100644
--- a/DDCore/src/parsers/ParserStandardList_set_int.cpp
+++ b/DDCore/src/parsers/ParserStandardList_set_int.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_set_int.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_set_long.cpp b/DDCore/src/parsers/ParserStandardList_set_long.cpp
index e9cded7dc..76bcb87e4 100644
--- a/DDCore/src/parsers/ParserStandardList_set_long.cpp
+++ b/DDCore/src/parsers/ParserStandardList_set_long.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_set_long.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_set_string.cpp b/DDCore/src/parsers/ParserStandardList_set_string.cpp
index 30f3647d8..f9672785c 100644
--- a/DDCore/src/parsers/ParserStandardList_set_string.cpp
+++ b/DDCore/src/parsers/ParserStandardList_set_string.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_set_string.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_vector_bool.cpp b/DDCore/src/parsers/ParserStandardList_vector_bool.cpp
index f8bd2cd7d..8351f08ad 100644
--- a/DDCore/src/parsers/ParserStandardList_vector_bool.cpp
+++ b/DDCore/src/parsers/ParserStandardList_vector_bool.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_vector_bool.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_vector_double.cpp b/DDCore/src/parsers/ParserStandardList_vector_double.cpp
index 7455f7860..d25a8d440 100644
--- a/DDCore/src/parsers/ParserStandardList_vector_double.cpp
+++ b/DDCore/src/parsers/ParserStandardList_vector_double.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_vector_double.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_vector_float.cpp b/DDCore/src/parsers/ParserStandardList_vector_float.cpp
index 2b1189928..c4a603980 100644
--- a/DDCore/src/parsers/ParserStandardList_vector_float.cpp
+++ b/DDCore/src/parsers/ParserStandardList_vector_float.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_vector_float.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_vector_int.cpp b/DDCore/src/parsers/ParserStandardList_vector_int.cpp
index 698b6662a..ae6503de4 100644
--- a/DDCore/src/parsers/ParserStandardList_vector_int.cpp
+++ b/DDCore/src/parsers/ParserStandardList_vector_int.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_vector_int.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_vector_long.cpp b/DDCore/src/parsers/ParserStandardList_vector_long.cpp
index 3c4c52333..e35adedce 100644
--- a/DDCore/src/parsers/ParserStandardList_vector_long.cpp
+++ b/DDCore/src/parsers/ParserStandardList_vector_long.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_vector_long.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParserStandardList_vector_string.cpp b/DDCore/src/parsers/ParserStandardList_vector_string.cpp
index 2eda0c809..9c335ed37 100644
--- a/DDCore/src/parsers/ParserStandardList_vector_string.cpp
+++ b/DDCore/src/parsers/ParserStandardList_vector_string.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParserStandardList_vector_string.cpp 2166 2016-03-17 16:37:06Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
diff --git a/DDCore/src/parsers/ParsersFactory.h b/DDCore/src/parsers/ParsersFactory.h
index 84815d46d..c1d6b07da 100644
--- a/DDCore/src/parsers/ParsersFactory.h
+++ b/DDCore/src/parsers/ParsersFactory.h
@@ -27,6 +27,7 @@
 // ============================================================================
 // DD4hep
 // ============================================================================
+#include "UsedParser.h"
 #include "GrammarsV2.h"
 // ============================================================================
 namespace DD4hep  {
diff --git a/DDCore/src/parsers/ParsersObjects_PxPyPzEVector.cpp b/DDCore/src/parsers/ParsersObjects_PxPyPzEVector.cpp
index 33695e903..7548c1590 100644
--- a/DDCore/src/parsers/ParsersObjects_PxPyPzEVector.cpp
+++ b/DDCore/src/parsers/ParsersObjects_PxPyPzEVector.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParsersObjects_PxPyPzEVector.cpp 2190 2016-04-08 08:31:42Z /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=sailer/CN=683529/CN=Andre Sailer $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
@@ -12,6 +12,7 @@
 //==========================================================================
 // Include files
 //==========================================================================
+#ifndef DD4HEP_PARSERS_NO_ROOT
 #include "ParsersStandardListCommon.h"
 
 namespace ROOT {  namespace Math {
@@ -39,5 +40,5 @@ namespace DD4hep {
     IMPLEMENT_MAPPED_PARSERS(pair,_L)
   }
 }
-
+#endif
 
diff --git a/DDCore/src/parsers/ParsersObjects_XYZPoint.cpp b/DDCore/src/parsers/ParsersObjects_XYZPoint.cpp
index 230369987..fcb75ee3a 100644
--- a/DDCore/src/parsers/ParsersObjects_XYZPoint.cpp
+++ b/DDCore/src/parsers/ParsersObjects_XYZPoint.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParsersObjects_XYZPoint.cpp 2119 2016-03-03 14:10:32Z markus.frank@cern.ch $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
@@ -12,6 +12,7 @@
 //==========================================================================
 // Include files
 //==========================================================================
+#ifndef DD4HEP_PARSERS_NO_ROOT
 #include "ParsersStandardListCommon.h"
 
 namespace ROOT {  namespace Math {
@@ -37,5 +38,5 @@ namespace DD4hep {
     IMPLEMENT_MAPPED_PARSERS(pair,ROOT::Math::XYZPoint)
   }
 }
-
+#endif
 
diff --git a/DDCore/src/parsers/ParsersObjects_XYZVector.cpp b/DDCore/src/parsers/ParsersObjects_XYZVector.cpp
index 859ad9acf..2bcee48d7 100644
--- a/DDCore/src/parsers/ParsersObjects_XYZVector.cpp
+++ b/DDCore/src/parsers/ParsersObjects_XYZVector.cpp
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: ParsersObjects_XYZVector.cpp 2119 2016-03-03 14:10:32Z markus.frank@cern.ch $
 //==========================================================================
 //  AIDA Detector description implementation for LCD
 //--------------------------------------------------------------------------
@@ -12,6 +12,7 @@
 //==========================================================================
 // Include files
 //==========================================================================
+#ifndef DD4HEP_PARSERS_NO_ROOT
 #include "ParsersStandardListCommon.h"
 
 namespace ROOT {  namespace Math {
@@ -50,5 +51,4 @@ namespace DD4hep {
     IMPLEMENT_MAPPED_PARSERS(pair,ROOT::Math::XYZVector)
   }
 }
-
-
+#endif
diff --git a/DDCore/src/parsers/ParsersStandardListCommon.h b/DDCore/src/parsers/ParsersStandardListCommon.h
index 44f9678a4..2231bd8e5 100644
--- a/DDCore/src/parsers/ParsersStandardListCommon.h
+++ b/DDCore/src/parsers/ParsersStandardListCommon.h
@@ -14,8 +14,6 @@
 // ============================================================================
 // Include files
 // ============================================================================
-#include "DD4hep/Parsers.h"
-#include "DD4hep/ToStream.h"
 #include "ParsersFactory.h"
 
 
@@ -63,6 +61,7 @@
       IMPLEMENT_STL_PARSERS(InnerType)                     \
       IMPLEMENT_MAPPED_PARSERS(pair,InnerType)            }}
 
+#ifndef DD4HEP_PARSERS_NO_ROOT
 // ============================================================================
 namespace DD4hep {
   namespace Parsers {
@@ -79,5 +78,6 @@ namespace DD4hep {
     }
   }
 }
+#endif
 // ============================================================================
 #endif /* PARSERS_STANDARD_LIST_COMMON_H */
diff --git a/DDCore/src/parsers/ParsersStandardMiscCommon.h b/DDCore/src/parsers/ParsersStandardMiscCommon.h
index 6e8bf4d5a..757abf0d9 100644
--- a/DDCore/src/parsers/ParsersStandardMiscCommon.h
+++ b/DDCore/src/parsers/ParsersStandardMiscCommon.h
@@ -14,7 +14,6 @@
 // ============================================================================
 // Include files
 // ============================================================================
-#include "DD4hep/Parsers.h"
 #include "ParsersFactory.h"
 // ============================================================================
 #endif /* PARSERS_STANDARD_MISC_COMMON_H */
diff --git a/DDCore/src/parsers/ParsersStandardSingle.cpp b/DDCore/src/parsers/ParsersStandardSingle.cpp
index e663d1ff4..e6046c4e3 100644
--- a/DDCore/src/parsers/ParsersStandardSingle.cpp
+++ b/DDCore/src/parsers/ParsersStandardSingle.cpp
@@ -9,7 +9,6 @@
 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
 //
 //==========================================================================
-#include "DD4hep/Parsers.h"
 #include "ParsersFactory.h"
 // ============================================================================
 #define PARSERS_DEF_FOR_SINGLE(Type)                                  \
diff --git a/DDCore/src/parsers/UsedParser.h b/DDCore/src/parsers/UsedParser.h
new file mode 100644
index 000000000..96c417a3b
--- /dev/null
+++ b/DDCore/src/parsers/UsedParser.h
@@ -0,0 +1,27 @@
+// $Id: $
+//==========================================================================
+//  AIDA Detector description implementation for LCD
+//--------------------------------------------------------------------------
+// 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.
+//
+//==========================================================================
+#ifndef DD4HEP_DDCORE_PARSERS_USEDPARSERS_H
+#define DD4HEP_DDCORE_PARSERS_USEDPARSERS_H
+
+
+#if defined(DD4hep)
+
+#include "Parsers/UsedParser.h"
+
+#else
+
+#include "DD4hep/Parsers.h"
+#include "DD4hep/ToStream.h"
+
+#endif
+
+#endif //  DD4HEP_DDCORE_PARSERS_USEDPARSERS_H
diff --git a/DDG4/include/DDG4/Geant4ActionPhase.h b/DDG4/include/DDG4/Geant4ActionPhase.h
index fe03723e2..86f64da6f 100644
--- a/DDG4/include/DDG4/Geant4ActionPhase.h
+++ b/DDG4/include/DDG4/Geant4ActionPhase.h
@@ -15,6 +15,7 @@
 #define DD4HEP_DDG4_GEANT4ACTIONPHASE_H
 
 // Framework include files
+#include "DD4hep/Exceptions.h"
 #include "DDG4/Geant4Action.h"
 
 // C/C++ include files
-- 
GitLab