diff --git a/DDCore/include/DD4hep/IDDescriptor.h b/DDCore/include/DD4hep/IDDescriptor.h
index 88c588f6c37b522ef8cbec3d9cf2dd04aa256c22..ea860384f23356711aafcfd7f3279448b415c56e 100644
--- a/DDCore/include/DD4hep/IDDescriptor.h
+++ b/DDCore/include/DD4hep/IDDescriptor.h
@@ -81,9 +81,10 @@ namespace DD4hep {
       IDDescriptor() : Ref_t() {}
       /// Constructor to be used when reading the already parsed object
       template <typename Q> IDDescriptor(const Handle<Q>& e) : Ref_t(e) {}
-      
       /// Initializing constructor
       IDDescriptor(const std::string& description);
+      // the string description of all fields
+      std::string fieldDescription() const  ;
       /// The total number of encoding bits for this descriptor
       unsigned maxBit() const;
       /// Access the field-id container 
diff --git a/DDCore/src/IDDescriptor.cpp b/DDCore/src/IDDescriptor.cpp
index 726642dd9c3671490ae31a8b46408ae83ab0ecbb..8ca79a8a7e54c49a9070e76e0d867264022c9f1c 100644
--- a/DDCore/src/IDDescriptor.cpp
+++ b/DDCore/src/IDDescriptor.cpp
@@ -99,6 +99,11 @@ string IDDescriptor::toString() const  {
   return "----";
 }
 
+std::string  IDDescriptor::fieldDescription() const {
+  BitField64* bf = data<Object>() ;
+  return bf->fieldDescription() ;
+}
+
 /// The total number of encoding bits for this descriptor
 unsigned IDDescriptor::maxBit() const  { 
   return data<Object>()->highestBit();